函数式编程
- 定义:在思考问题时,使用不可变值和函数,函数对一个值进行处理,映射成另一个值
Functional Interface
- 定义:任何接口,如果只包含 唯一 一个抽象方法,那么它就是一个FI。为了让编译器帮助我们确保一个接口满足FI的要求(也就是说有且仅有一个抽象方法),Java8提供了@FunctionalInterface注解,编译器通过注解进行编译检查,以确保包含唯一接口中唯一方法。
- 自定义函数式接口
@FunctionalInterface
public interface PersonSearch {
void test();
}
@FunctionalInterface
public interface PersonSearch1 {
void test();
void play();
}
@FunctionalInterface
public interface PersonSearch2 {
void test();
default void play(){}
}
- jdk8中提供的Functional Interface
接口 |
参数 |
返回值 |
说明 |
Predicate< T > |
T |
boolean |
T是否满足条件 |
Consumer< T > |
T |
void |
在T上执行操作,无返回值 |
Function< T,R > |
T |
R |
通过T返回一个R的实例 |
Supplier< T > |
无 |
T |
返回实例T |
Lambda表达式
使用说明
- 基于类型推断(jdk1.7即支持)
- 其实现时基于匿名内部类(通过javac可以看出)
- lambda中没有参数时,使用()来表示
- 只有一个参数时,可以通过x->或(x)->形式
- 多个参数,包含在括号内
- 主题是多行语句时,通过{}形成代码块
资料