其实lambda和方法引用是两个东西,但是方法引用一般是配合着方法引用效果会更好
更能体现java代码的简洁行
先了解方法引用就不会把知识点搞混
1,静态方法引用
首先大家使用静态方法,唯一的功能就是用类名调取然而关键就是这里,
所以方法引用可以写为 Math::ads
这就是引用,所以不要想的太难
但是一般这样写没有意义
需要配合lambda使用才能体现价值
想掉静态方法,直接掉就成对吧,使用lambda才是我们要做的目的
方法引用的理解不需要太深,知道是为什么就是啦,
想要理解方法引用,答案就在眼前,
大部分的方法引用和lambda是配合使用的,实际开发中,也不需要我们写着一类方法,
简单来说,这种写法,是java设计者,让我们使用的工具而已,所以我们只需要掌握怎么使用
即可,也就是了解每一个Lambda方法写入的匿名内部类,然后内部类中重写的方法,
之后,我们的参数是怎么被方法进行使用的,借助给的规则,进行操作数据,
然后就是在操作的过程中,java设计者给我们创造的巧合,哈哈,就促使了方法引用的出现
lambda表达式写完之后,参数是有的,然后方法体是有的,但是如果参数,在被使用的过程中
有出现了其他方法的调用就,出现了方法引用
先说明一下: 方法引用的核心规则,已知即可省略
分为四种,但是使用的道理都是一样的
1.如果是静态方法调用参数,就可以直接 静态类名::静态方法名
是不是觉得是工具类调用一样简单
另外三个也一样
方法引用的格式-实例方法引用
对象名::实例方法
Arrays.sort(studentArray, (o1, o2) -> stu.compareStudent(o1, o2));
就可以写为
Arrays.sort(studentArray, stu::compareStudent);
方法引用的格式-特殊类型方法引用
类名::实例方法名
Arrays.sort(studentArray,(o1,o2) -> o1.compareStudent2(o2));
Arrays.sort(studentArray, Student::compareStudent2);
方法引用的格式-构造方法引用
类名::new
useCreate(name -> new Student(name));
useCreate(Student::new);
还有一个重点
使用能使用Lambda表达式的匿名内部类
必须是只有一个抽象方法的的接口