Java 8 Lambda 表达式和函数式接口最佳实践
Java 8 在 java.util.function
包中,定义了大量现成可用的函数式接口,使得我们在使用 lambda 表达式时,可以避免大部分的函数式接口编码工作。
函数式接口
函数式接口 :只有一个抽象方法的接口。
最佳实践:
- 使用
@FunctionalInterface
注解。使用该注解后,编译器就会在编译时检查这个接口是否符合函数式接口规范 - 避免使用函数式接口进行方法重载。比如使用
Callable<V>
(计算并得到一个结果;如果无法计算则抛出异常)和Supplier<T>
(获取一个结果)作为参数进行方法重载时,明显会出错
Lambda 表达式 vs 内部类
虽然我们在使用 Lambda 表达式时,其本质就是将内部类替换为 Lambda 表达式。但 Lambda 表达式并不等于内部类:
- 内部类:拥有自己的
this
指向,this
指向内部类对象 - Lambda 表达式:没有自己的
this
指向,this
指向封闭范围
这类似于 ES6 的箭头函数与普通函数的区别。
Lambda 表达式最佳实战
1、避免指定参数类型。
2、避免使用小括号将单个参数括起来。
3、在需要返回结果的单行 Lambda 表达式体中,避免使用 return
关键字和大括号。
4、若 Lambda 表达式只是简单地调用在其他地方已经实现了的方法时,可直接使用 方法引用 。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论