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 @   夫君  阅读(89)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示