提示四十二

2022-08-09  本文已影响0人  飞絮搅青冥

提示四十二:lambda 表达式优于匿名类。

  1. 匿名类适用于需要函数对象的经典面向对象设计模式,特别是策略模式。
  2. Lambdas 在功能上与匿名类相似,但更为简洁。
  3. Lambda表达式可以省略参数和返回值的类型,这是因为编译器会通过类型推断推导出来。(不能推导出来的时候需要指明)
  4. lambdas 使得使用函数对象在以前没有意义的地方非常实用。
  5. lambda 没有名称和文档; 如果计算不是自解释的,或者超过几行,则不要将其放入 lambda 表达式中。
  6. Lambdas 与匿名类共享无法可靠地序列化和反序列化实现的属性。
  7. 以下情况仍需要使用匿名类:
    1.想创建抽象类的实例。
    2.多个抽象方法的接口创建实例。
    3.需要从函数对象主体内部访问它,需要使用匿名类,因为lambda的this指外围实例。

lambda其实也就是java8包装的语法糖,可以让我们更加方便容易得编写函数式的代码。记得以前我们项目还没有升级java8的时候,系统中为了复用一下函数,使用了guava相关的包,由于原生不够支持,所有的函数基本都需要使用匿名类来编写,会让代码冗长又难以阅读。现在换了lambda,其实本质还是一样,我们在编写代码的时候还是需要注意简洁和容易阅读,所以遇到很长的lambda表达式的时候最好还是要抽一些方法出来,让变量名来更直观表示代码含义。

上一篇下一篇

猜你喜欢

热点阅读