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); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)