Lambda表达式有参数有返回值的练习(自定义接口)和Lambda省略格式&Lambda使用前提

  • 给定一个计算器Calculator接口,内含抽象方法calc可以将两个int数字相加得到和值
  • 使用L ambdo的标准格式调用invokeCalc方法,完成120和130的相加计算
public interface Calculator {
    // 定义一个计算两个int整数和的方法并返回结果
    public abstract int calc(int a, int b);
}
public class DemoLambdaMain {
    public static void main(String[] args) {
        // 法1 调用invokeCalc方法,方法的参数是一个接口,可以使用匿名内部类
        invokeCalc(10, 20, new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a + b;
            }
        });
        // 法2 使用Lambda表达式,简化匿名内部类
        invokeCalc(12, 5, (int a, int b) -> {
            return a + b;
        });
    }

    public static void invokeCalc(int a, int b, Calculator c){
        int sum = c.calc(a,b);
        System.out.println(a + "+" + b + "=" + sum);
    }
}

Lambda省略格式

可推导可省略

Lambda强调的是"做什么"而不是怎么做”,所以凡是可以根据上下文推导得知的信息,都可以省略。例如上述案例2还可以使用Lambda的省略写法:

public class DemoLambdaMain {
    public static void main(String[] args) {
        invokeCalc(120, 130, (a, b) -> a+b);
    }

    public static void invokeCalc(int a, int b, Calculator c){
        int sum = c.calc(a,b);
        System.out.println(a + "+" + b + "=" + sum);
    }
}

省略规则

在Lambda标准格式的基础上,使用省略写法的规则为:

  1. 小括号内参数的类型可以省略;
  2. 如果小括号内有且仅有一个参,则小括号可以省略;
  3. 如果大括号内有且仅有一个语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号

 

posted @ 2022-07-08 10:38  夫君  阅读(94)  评论(0)    收藏  举报