Lambda - @FunctionalInterface 函数
2019-08-27 本文已影响0人
AlanSun2
什么是Lambda?
我的理解是Lambda就是函数式接口的一种表现形式。
@FunctionalInterface
一种信息性注解类型,表示被注解接口是一个符合Java语言规范定义的函数式接口。
一个函数式接口只有一个抽象方法,但是被注解接口中可以有重写了java.lang.Object
中的抽象方法,例如:
@FunctionalInterface
public interface MyInter {
void test();
/**
* toString 是Object中的方法
*/
String toString();
}
这是因为,所有的实现类都隐式的继承Object
方法,自然也包含这些方法。
请注意,可以使用lambda表达式,方法引用或构造函数引用创建函数式接口的实例。
Java8中的内置函数式接口
接口 | 参数 | 返回类型 | 说明 |
---|---|---|---|
Predicate<T> | T | boolean | 断言型。输入某个值,输出bool值,用于对某值进行判定 |
Consumer<T> | T | void | 消费型。输入某值,无输出。用于消费某值 |
Function<T,R> | T | R | 函数型。输入某类型值,输出另种类型值,用于类型转化等 |
Supplier<T> | None | T | 供给型。无输入,输出某值,用于生产某值 |
方法引用和构造器引用
方法引用和构造器引用是Lambda表达式的变体。
方法引用包括:
- 对象方法引用
- 类静态方法引用
- 类实例方法引用
什么时候可以使用方法引用和构造器引用?
当Lambda体内的内容由一个方法或构造器提供时,可以使用方法引用和构造器引用。