Lambda 表达式支持将代码块作为方法参数
public class CommandTest{public static void main(String[] args){var pa = new ProcessArray();int[] target = [3,-4,6,4];// 处理数组,具体处理行为取决于匿名内部类pa.process(array,(int element)->{System.out.println("数组元素的平方是:"+element * element);});}}
interface Eatble{void taste();}interface Flyable{void fly(String weather);}interface Addable{int add(int a, int b);}public class LambdaQs{// 调用该方法需要Eatable 对象public void eat(Eatable e){System.out.println(e);e.taste();}// 调用该方法需要Flyable 对象public void drive(Flyable f){System.out.println("我在驾驶"+ f);f.fly("【碧空如洗的晴日】");}//调用该方法需要Addable 对象public void test(Addable add){System.out.println("5与3的和为:"+ add.add(5,3));}public static void main(String[] args){var lq = new LambdaQs();// Lambda表达式的代码块只有一条语句可以省略花括号lq.eat(()->System.out.println("苹果的味道不错"));//Lambda表达式的形参列表只有一个形参,可以省略圆括号lq.drive(weather->{System.out.println("今天天气是:"+ weather);System.out.println("直升机飞行平稳");});//Lambda 表达式的代码块只有一条语句,可以省略花括号// 代码块中只有一条语句,即使该表达式需要返回值,也可以省略return 关键字lq.test((a,b) -> a+b);}}
Lambda 表达式的类型,也被称为“目标类型(target type)”
