Lambda表达式的基础语法表达式格式(参数) -> {方法体}
格式说明():存放参数 , 留空就代表没有参数 。函数接口的参数列表 , 不需要写类型 , 需要定义参数名称 。->:是新引入的语法格式 , 代表指向动作 。{}:方法体
无参方法调用在接口类中声明一个无参的抽象方法 , 通过lambda表达式来完成调用 。()不需要存放参数 , 最后将会返回一个实现类对象 。在通过调用对象的get方法 。
// 匿名内部接口业务逻辑UserService user2 = () -> System.out.println("匿名内部接口业务逻辑");user2.get();更加简便的写法
((UserService)() -> System.out.println("匿名内部接口业务逻辑")).get();含参数方法调用在MathService定义一个含有参数的抽象方法 , 原本的方式通过匿名内部接口 。可以通过使用lambda表达式更加简便 , 并且可以省去{} , 也不需要return 。
MathService math = new MathService() { @Override public Integer add(int a, int b) { return a + b; }};MathService mathService = (a, b) -> a + b;System.out.println(mathService.add(1, 1));方法引入规则方法引入需要遵循规范:方法参数列表、返回类型与函数接口参数列表与返回类型必须要保持一致 。方法引入的规则: 静态方法引入: 类名::(静态)方法名称 对象方法引入: 类名:: 实例方法名称 实例方法引入:new对象 对象实例::方法引入 构造函数引入:类名::new方法引用提供了非常有用的语法 , 可以直接引用已有的java类或对象的方法或构造器 。方法引用其实也离不开Lambda表达式 , 与lambda联合使用 , 方法引用可以使语言的构造更加紧凑简洁 , 减少冗余代码 。方法引用提供非常有用的语法 , 可以直接引用已有的java类或者对象中方法或者构造函数 , 方法引用需要配合Lambda表达式语法一起使用减少代码的冗余性问题 。
文章插图
实例构造器引用通过构造器引用实例化对象 ,
public static void main(String[] args) { // 使用匿名内部类 CarService carService = new CarService() { @Override public Car getCar() { return null; } }; // 使用引用方法 CarService car = Car::new; car.getCar();}public class Car { private String name; private String brand; public Car() { }}public interface CarService { Car getCar();}静态方法引入UserService u = UserService::hello;u.get();在userservice中 , 有一个抽象get方法和一个静态方法
@FunctionalInterfacepublic interface UserService { void get(); static void hello() { System.out.println("hello"); }}
经验总结扩展阅读
- 圆葱饼如何制作
- 字符串 P7361 「JZOI-1」拜神
- 甩手功的十大功效真有效吗
- 芒果的最佳搭配水果
- 审计中注册会计师的责任是什么
- 分式方程无解是什么意思
- 竹笋怎样保存时间更久
- 形容心情好的句子
- 眼罩哪里可以买到
- 小苏打去斑效果好吗