Loading

Lambda表达式的使用

好处

  • 避免匿名内部类定义过多
  • 简洁代码

使用前提:接口是函数式接口

函数式接口:只包含一个抽象方法的接口

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

Lambda表达式的使用

假如现在我们需要实现一个匿名内部类,首先定义一个函数式接口,并实例化该接口

interface Like {
    void show();
}

public class LambdaTest {
    public static void main(String[] args) {
        Like like = new Like() {
            @Override
            public void show() {
                System.out.println("Hello World");
            }
        };
        like.show();
    }
}


这里可以使用Lambda表达式对匿名内部类进行简化

public static void main(String[] args) {
    Like like = () -> {
        System.out.println("Lambda表达式");
    };
    like.show();
}

如果接口中定义的方法有参数,则把参数加在表达式的括号里面

public static void main(String[] args) {
    Like like = (int a) -> {
        System.out.println("Lambda表达式" + a);
    };
    like.show();
}

带有参数的Lambda表达式也可以简化

去掉参数类型

public static void main(String[] args) {
    Like like = (a) -> {
        System.out.println("Lambda表达式" + a);
    };
    like.show();
}

去掉括号,但如果有多个参数的时候,括号不可省略

public static void main(String[] args) {
    Like like = a -> {
        System.out.println("Lambda表达式" + a);
    };
    like.show();
}

去掉花括号:当实现的代码只有一行的时候,花括号也可以去掉

public static void main(String[] args) {
    Like like = a -> System.out.println("Lambda表达式" + a);
    like.show();
}
posted @ 2021-04-03 15:30  qinuna  阅读(114)  评论(0编辑  收藏  举报