目录
Java内置函数式接口
接口 | 输入参数 | 返回类型 | 说明 |
---|---|---|---|
Predicate<T> | T | boolean | 断言 |
Consumer<T> | T | / | 消费一个数据 |
Function<T, R> | T | R | 输入T输出R的函数 |
Supplier<T> | / | T | 提供一个数据 |
UnaryOperator<T> | T | T | 一元函数(输入输出类型相同) |
BiFunction<T, U, R> | (T. U) | R | 2个输入的函数 |
BinaryOperator<T> | (T, T) | T | 二元函数(输入输出类型相同) |
Lambda引用变量必须为final类型的原因?
因为Java传参为值传递,外部变量如果改变引用对象,就会造成传进lambda内的变量与外部变量引用的不是同一个对象,就会导致lambda的计算结果与外部变量无关的现象。而lambda希望的是计算结果与入参有关,所以不希望外部变量改变引用对象,所以必须为final类型。