avatar

Catalog
Lambda表达式

简介

任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。

对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。

作用

使用lambda表达式可以避免匿名内部类定义过多,使得代码看起来更加简洁,去掉了一堆没有意义的代码,只留下了核心逻辑。

发展历程

对于这种一般只用一次的类,为了使得代码更加简洁,经历了以下过程:

  • 普通实现类:最原始的方法,定义了抽象接口之后,定义一个接口的实现类,再new一个对象,再调用对象的方法。

  • 静态内部类: 可以把这个接口的实现类定义到需要用到的类的内部,类前面加上static,为静态内部类

  • 局部内部类:可以把这个接口的实现类定义到需要用到的类的方法内部,为局部内部类

  • 匿名内部类:虽然这个接口有实现类,但是这个类没有名字,只能通过接口或者父类来new这个实现类的对象。

    java
    1
    2
    3
    4
    5
    6
    7
    >接口  变量 =new 接口(){

    接口中的方法实现

    >}
    >//在作为参数时
    >new 接口(){}
  • lambda表达式:观察到匿名内部类还有继续简化的空间,比如接口 写了两次,还有一个繁琐的new关键字,lambda做了如下优化。因为函数式接口里面只有一个方法,所以{ }里面直接写的就是那个方法的实现。

    接口 变量 =()-> { }

    如果只有一行return xxx的代码,完全可以用更简单的写法.

Author: realLiuSir
Link: http://yoursite.com/2020/04/26/lambda%E8%A1%A8%E8%BE%BE%E5%BC%8F/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Donate
  • 微信
    微信
  • 支付寶
    支付寶