java -- Lambda 表达式

394 阅读2分钟

「这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

Lambda 表达式

Lambda概述: Lambda表达式是JDK8 开始后的一种新语法形式。 作用:简化匿名内部类的代码写法。

截屏2021-11-05 下午1.40.53.png



public class LambdaDemo2 {

    public static void main(String[] args) {
        Swimming s = new Swimming() {
            @Override
            public void swim() {
                System.out.println("老师游泳");
            }
        };
        go(s);

        Swimming s1 = ()->{
            System.out.println("老师游泳");
        };
        go(s1);
        // 继续简化
        go(()->{
            System.out.println("老师游泳");
        });
        
    }
    
    public static void go(Swimming s){
        System.out.println("开始");
        s.swim();
        System.out.println("结束");
    }
    
    
}

@FunctionalInterface // 一旦加上这个注释,就可表明是函数式接口
interface Swimming{
    void swim();
}

总结: 1.Lambda表达式的基本作用? 简化函数式接口的匿名内部类的写法。 2.Lambda表达式有什么使用前提? 必须是接口的匿名内部类,接口中只能有一个抽象方法。 3.Lambda的好处? Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,是Java语言表达能力得到了提升。

截屏2021-11-05 下午2.47.25.png

Lambda表达式简化Comparator接口的匿名形式

截屏2021-11-05 下午2.48.58.png

Lambda表达式简化按钮监听器 ActionListener的匿名内部类形式

截屏2021-11-05 下午2.50.52.png

Lambda表达式的省略写法(进一步在Lambda表达式的基础上继续简化)

参数类型可以省略不写。 如果只有一个参数,参数类型可以省略,同时()也可以省略。 如果Lambda表达式的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号! 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,此时,如果这行代码是return语句, 必须省略return不写,同时也必须省略”;“不写。

截屏2021-11-05 下午3.00.20.png