美文网首页
提示四十二

提示四十二

作者: 飞絮搅青冥 | 来源:发表于2022-08-09 01:49 被阅读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表达式的时候最好还是要抽一些方法出来,让变量名来更直观表示代码含义。

    相关文章

      网友评论

          本文标题:提示四十二

          本文链接:https://www.haomeiwen.com/subject/arigwrtx.html