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); } } }

浙公网安备 33010602011771号