第七章 第42条:Lambda表达式优先于匿名类

带有单个抽象方法的接口可以用lambda表达式来替代。lambda表达式相较于相同功能的匿名类更加简洁直接。
编译器可以利用类型推断来自动推断类型,所以lambda表达式中参数和返回值类型可以省略。编译器无法推断时再手动指定,或者加上类型后能使程序更加清晰也可以指定。
不要使用原生态类型。使用原生态类型会使编译器无法推断类型,必须在lambda中指定类型,这大大增加了lambda表达式的繁琐程度。
由于lambda表达式没有名字与文档,所以如果lambda表达式不是自描述的或者超出来了3行,就不要放到lambda表达式里了
枚举构造器中的lambda表达式是无法访问枚举的实例成员的。
尽可能不要序列化lambda或匿名实例。

以下情况仍需要使用匿名类:
1.想创建抽象类的实例。
2.多个抽象方法的接口创建实例。
3.需要从函数对象主体内部访问它,需要使用匿名类,因为lambda的this指外围实例。

思考:
lambda表达式很好用,大段的代码能通过一行lambda表达式就解决掉。但很多时候lambda表达式会写的十分臃肿,可读性很差。比如下面这段代码,一个lambda表达式整整70多行。完全可以抽一些方法出来。过长的lambda表达式可以拆成多个短的。通过变量命名来增加可读性。

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容