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

Lambda表达式的有参数有返回值的练习

需求;

  给定一个计算器Calculator接口,内含抽象方法calc可以将两个int数字相加得到和值 

  使用L ambda的标准格式调用invokeCalc方法,完成120和130的相加计算

public interface Calculator {
    public abstract int calc(int a ,int b);
}
复制代码
public class Demo01Calculator {
    public static void main(String[] args) {
        //调用invokeCalc方法,方法的参数是一个接口,可以使用匿名内部类
        invokeCook(120, 130, new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a+b;
            }
        });
        //使用Lambda表达式简化匿名内部类的书写
        invokeCook(120,150,(int a,int b)->{
            return a+b;
        });

    }

    public static void invokeCook(int a,int b,Calculator calculator){
        int sun = (a+b);
        System.out.println(sun);
    }
}
复制代码

运行结果:

 

 

 

Lambda省略格式和使用前提

Lambda表达式:是可推导,可以省略

凡是根据上下文推导出来的内容,都可以省略书写

可以省略的内容

  1.(参数列表):括号中参数列表的数据类型,可以省略不写

  2.(参数列表):括号中的参数如果只有一个,那么类型和()都可以省略

  3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号)

    注意:要省略{},return,分号必须一起省略

复制代码
public class Demo01Calculator {
    public static void main(String[] args) {
        //调用invokeCalc方法,方法的参数是一个接口,可以使用匿名内部类
        invokeCook(120, 130, new Calculator() {
            @Override
            public int calc(int a, int b) {
                return a+b;
            }
        });
        //使用Lambda表达式简化匿名内部类的书写
        invokeCook(120,150,(int a,int b)->{
            return a+b;
        });

        //优化Lambda
        invokeCook(150,250,(a,b)->(a+b));
    }

    public static void invokeCook(int a,int b,Calculator calculator){
        int sun = (a+b);
        System.out.println(sun);
    }
}
复制代码
复制代码
public class Demo01Cook {
    public static void main(String[] args) {
        //调用方法,参数是Cook接口,传递Cook接口的匿名内部类对象
        invokeCook(new Cook() {
            @Override
            public void makeFoood() {
                System.out.println("01吃饭了");
            }
        });

        //使用Lambda表达式,简化匿名内部类的书写
        invokeCook(()->{
            System.out.println("02吃饭了");
        });
     //简化Lambda
        invokeCook(()-> System.out.println("03吃饭了"));


    }
    //调用一个方法,参数传递Cook接口,方法内部调用Cook接口中的方法makeFood
    public static void invokeCook(Cook cook){
        cook.makeFoood();
    }
}
复制代码
复制代码
public class Demo01Arrays {
    public static void main(String[] args) {
        Person[] arr = { new Person("柳岩",36),new Person("迪丽热巴",18),new Person("古力娜扎",19)

        } ;
//        //对数组的Person对象使用Arrays的sort方法通过年龄进行升序(前边,后边)排序  sort():排序
//        Arrays.sort(arr,(Person o1,Person o2)->{
//                return o1.getAge()-o2.getAge();
//            }
//        );

        //简化Lambda
        Arrays.sort(arr,(o1,o2)->o1.getAge()-o2.getAge());


        //遍历输出
        for (Person person : arr) {
            System.out.println(person);
        }
    }
}
复制代码

 

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