1:如果一个接口只有一个抽象方法,那么这个接口就是一个函数式接口。
2:如果我们在某个接口上定义了FunctionalInterface注解,那么编译器就会按照函数式接口的定义方式去规范此接口。
3:如果某个接口只有一个抽象方法,但是我们并没有声明FunctionalInterface注解,编译器依然会将其看做是一个函数式接口。
4:如果一个接口中有一个抽象方法和一个从object中override的抽象方法,此时仍会将其看做为函数式接口。
函数式接口可以通过lambda表达式、方法引用、构造方法引用进行创建(使用lambda表达式创建更加简洁)
lambda表达式作用:
传递行为而不仅仅是值
提升抽象层次
api重用性更好
更加灵活