Lambda表达式(简化代码)

Lambda简介(java8 新特性)

  • Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。

  • JDK 也提供了大量的内置函数式接口供我们使用,使得 Lambda 表达式的运用更加方便、高效。

  • 语法形式为 () -> {},其中 () 用来描述参数列表,{} 用来描述方法体,-> 为 lambda运算符 ,读作(goes to)。

Lambda 语法简化

public class TestLambda1 {

    //3.静态内部类
    static class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("I like lambda2");
        }
    }

    public static void main(String[] args) {
        ILike iLike = new Like();
        iLike.lambda();

        iLike = new Like2();
        iLike.lambda();

        //4.局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("I like lambda3");
            }
        }

        iLike = new Like3();
        iLike.lambda();

        //5.匿名内部类,没有类的名称,必须借助接口或父类
        iLike = new ILike() {
            @Override
            public void lambda() {
                System.out.println("I like lambda4");
            }
        };
        iLike.lambda();

        //6.用lambda简化
        iLike = () -> {
            System.out.println("I like lambda5");
        };
        iLike.lambda();

    }
}

//1.定义一个函数式的接口
interface ILike{
    void lambda();
}

//2.实现类
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("I like lambda");
    }
}

Java 8 的 Lambda 语法:

(参数列表) -> {函数体}

对于无参的 Lambda 表达式:

() -> {函数体}

对于单个参数的 Lambda 表达式:

(x) -> {函数体}

它可以简化为:

x -> {函数体}

对于多个参数的 Lambda 表达式:

(x,y,z) -> {函数体}

如果函数体只有一行代码,则可以省略函数体的大括号。另外对于参数列表,由于 Java 的编译器可以进行类型推断,所以不需要声明参数的类型。

在 Java 8 中,Lambda 的创建是通过字节码指令invokedynamic来完成的,减少了类型和实例的创建消耗。在 Java 8 之前,我们使用匿名类,但是匿名类需要创建新的对象。

posted @ 2021-09-27 20:01  白羽桦  阅读(211)  评论(0)    收藏  举报