Lambda表达式——省略模式

小贴士:
Lambda表达式只能简化函数式接口的匿名内部类的写法形式。
函数式接口:
首先必须是接口,其次接口中有且仅有一个抽象方法的形式
通常接口上方加上一个@FunctionnallInterface注解,标记该接口必须是满足函数式接口

Lambda表达式的省略模式

  • 小括号内的参数类型可以省略,有多个参数的情况下,不能只省略一个

  • 如果小括号内有且仅有一个参数,则小括号可以省略

  • 如果大括号内有且仅有一个语句,可以同时省略大括号,return 关键字及语句分号。

lambda演示代码

情形一:多个参数,有返回值

package com.java.lambda;
@FunctionalInterface // 一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
public interface Count {
    int add(int num1, int num2);
}
package com.java.lambda;
// 多个参数,有返回值
public class LambdaDemo01 {
    public static void main(String[] args) {
        // 完整写法
        useCount((int x, int y) -> {
            return x + y;
        });
        System.out.println("-------------");
        // 省略写法
        useCount((x, y) -> x + y);
        // 进阶方式
        useCount(Integer::sum);
    }
    
    private static void useCount(Count count) {
        System.out.println(count.add(3, 7));
    }
}

情形二:一个参数,无返回值

package com.java.lambda;
@FunctionalInterface // 一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
public interface Swimming {
    void swim(String name);
}
package com.java.lambda;
// 一个参数,无返回值
public class LambdaDemo02 {
    public static void main(String[] args) {
        // 完整写法
        go((String s) -> {
            System.out.println(s + "游泳贼厉害。。。");
        });
        System.out.println("-------------");
        // 省略写法
        go(s -> System.out.println(s + "游泳贼厉害。。。"));
    }
    
    private static void go(Swimming swimming) {
        swimming.swim("小红");
    }
}

情形三:无参数无返回值

package com.java.lambda;
@FunctionalInterface // 一旦加上这个注解必须是函数式接口,里面只能有一个抽象方法
public interface Running {
    void run();
}
package com.java.lambda;
// 无参无返回值
public class LambdaDemo03 {
    public static void main(String[] args) {
        // 完整写法
        move(() -> {
            System.out.println("一起去跑步呀。。。");
        });
        System.out.println("-------------");
        // 省略写法
        move(() -> System.out.println("一起去跑步呀。。。"));
    }
    
    private static void move(Running running) {
        running.run();
    }
}

以上就是我对Lambda表达式—省略写法的理解,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟。

你可能感兴趣的:(java,java)