Lambda表达式有参数有返回值的练习(自定义接口)和省略格式&Lambda使用前提
Lambda表达式有参数有返回值的练习(自定义接口)
给定一个计算器calculator接口,内含抽象方法calc可以将两个int数字相加得到和值
使用Lambda的标准格式调用invokeCalc方法,完成120和130的相加计算
public interface Calculator { //定义一个计算两个int整数和的方法并返回结果 public abstract int calc(int a,int b); }
public class CalculatorTest { public static void main(String[] args) { invoke(120,130,(int a, int b)->{ return a + b; }); } public static void invoke(int a, int b, Calculator c){ int sum = c.calc(a, b); System.out.println(sum); } }
省略格式&Lambda使用前提
lambda表达式: 是可推导,可以省略
根据上下文推导出来的内容,都可以省略书写
可以省略的内容:
1.(参数列表):括号中的参数列表的数据类型,可以省略不写
2.(参数列表): 括号中的参数如果只有一个,那么类型和()都可以进行省略
3.{一些代码}:如果{}中的代码只有一行,无论是否有返回值,都可以省略({},return,分号)
注意:要省略{},return,分号必须一起省略
Lambda使用前提
lambda的语法非常简洁,完全没有面向对象复杂的束缚。使用时有几个问题需要特别注意:
1.使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。
无论是JDK内置的Runnable、Comparator接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,
才可以使用Lambda。
2.使用Lambda必须具有上下文推断。
也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。
有且仅有一个抽象方法的接口,称为“函数式接口”。
优化的: