jdk8
函数是接口:
- 如果一个接口只有一个抽象方法,那么该接口就是一个 函数式接口。
- 如果在接口上声明了FunctionInterface注解,那么编译器就会按照函数式接口的定义要求该接口。
- 如果某个接口只有一个抽象方法,并没有声明FunctionInterface注解,也会是一个函数式接口。
- 将函数作为一等公民的语言中,Lambda表达式的类型是函数,但在Java中,Lambda表达式是对象,他们必须依附于一类特别的对象类型--函数式接口(FunctionalInterface)
- Java Lambda表达式是一种匿名函数;他是没有什么的方法,即没有访问修饰符、返回值声明和名字;
- Lambda表达式的作用
- 传递行为,而不仅仅是值;提升抽象层次;API重用性更好;更加灵活;
- 传统做法是将行为提前定义好,Lambda表达式可以在使用的时候传递行为
完整语法
(type1 arg1,type2 arg2,..) -> {body}