Java 8 中的函数式接口
解决了什么问题
让 Java 支持函数做为参数。
Java 中函数参数只允许传递数据或者对象,不能传递函数。想要实现类似传递函数的功能,需要定义一个接口,约定接口中有一个函数会被调用,使用时传递的是 new 了该接口实现类的一个对象,其实是面向接口编程。
Java 8 中引入了 Lambda 表达式,一种语法糖,Java 编译器会解析成对应的类。Lambda 表达式本质上就是一个接口的匿名实现对象实例。
定义了 @FunctionalInterface 注解,添加该注解 Java 编译器就认可该接口为函数式接口,可以做为 Lambda 表达式使用。
Java 8 默认实现了四种 Functional Interfaces。
Java 8 里四种默认定义的函数接口
为了适配 Lambda 表达式,根据参数和返回值不同,定义了四种接口。
@FunctionalInterface 的使用
1 声明定义 @FunctionalInterface 接口
Predicate
2 定义函数,以函数式接口为参数,调用约定方法
Java Collection
3 方法调用
lambda 写法
版权声明: 本文为 InfoQ 作者【陈皮】的原创文章。
原文链接:【http://xie.infoq.cn/article/b2b3ba5cd84b40a764967d607】。文章转载请联系作者。
评论 (1 条评论)