Lambda表达式的所有写法
Lambda表达式
jdk1.8 新增Lambda表达式
作用: 简化匿名内部类的 使用前提: 函数式接口 函数式接口: 只有一个必须被重写的抽象方法的接口 强制检测是否为函数式接口: 注解@FunctionalInterface 语法: () -> {} ():匹配要重写的抽象方法的参数列表 ->:lambda符号 箭头符号 具有上下文推倒的作用 {}::匹配要重写的抽象方法的方法体
public class Lambda02 { public static void main(String[] args) { //匿名内部类 /* * Smoke ss = new Smoke() { * * @Override public void smoking() { System.out.println("00000"); } }; */ //lambda1 // Smoke s = ()->{ // System.out.println("11111"); // System.out.println("11111"); // }; // s.smoking(); // s.smoking(); // s.smoking(); //lambda2 方法体中如果方法体语句只有一句,方法体前后的{}可以省略 // Smoke s = ()->System.out.println("11111"); // s.smoking(); // s.smoking(); // s.smoking(); //lambda3 如果有参数,参数的数据类型可以省略 // Smoke s = (a, b)->System.out.println("11111"+a+b); // s.smoking(1,2); // s.smoking(2,3); // s.smoking(4,5); //lambda4 如果有参数只有一个,前后的()可以省略 // Smoke s = a->System.out.println("11111"+a); // s.smoking(1); // s.smoking(2); // s.smoking(4); //lambda5 如果语句体还有一句,并且3还是return语句,return关键字 以及前后{}可以一起省略 Smoke s = a-> "返回"+a; System.out.println(s.smoking(2));; System.out.println(s.smoking(3));; } } @FunctionalInterface interface Smoke{ String smoking(int a); }
上一篇:
IDEA上Java项目控制台中文乱码