方法引用:方法引用就是让我们根据已有的方法创建lambda表达式,假如一个lambda表达式只是单纯的调用一下这个方法,那么我们就可以省去描述的步骤,直接用名称进行调用。
语法:
目标引用 :: 方法名称
其中::是分隔符
等效方法引用不需要加上括号,因为并没有实际调用这个方法。
主要的三类方法引用:
1.指向静态方法的方法引用。如integer 的parseint方法,Integer::parseInt
类名 :: 静态方法名
2.指向任意类型实例方法的方法引用(例如String 的 length 方法,写作 String::length)。
类名 :: 实例方法名
即引用了一个对象的方法,而这个方法恰恰是这个Lambda的一个参数
3.指向现有对象的实例方法的引用
对象引用 :: 实例方法名
即在Lambda当中调用一个已经存在的外部对象的方法。如 Apple :: getWeight
** 编译器会进行一种与Lambda表达式类似的类型检查过程,来确定对于给定的函数 式接口,这个方法引用是否有效:方法引用的签名必须和上下文类型匹配。