方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们。在一些情况下,比起使用Lambda表达式,它们似乎更易读,感觉也更自然。
先前:
inventory.sort((Apple a1, Apple a2)
-> a1.getWeight().compareTo(a2.getWeight()));
之后(使用方法引用和java.util.Comparator.comparing):
inventory.sort(comparing(Apple::getWeight));
如何构建方法引用
- 指向静态方法的方法引用(例如Integer的parseInt方法,写作Integer::parseInt)
- 指 向 任意类型实例方法 的方法引用(例如 String 的 length 方法,写作
String::length)。
- 指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction 用于存放Transaction类型的对象,它支持实例方法getValue,那么你就可以写expensive�Transaction::getValue)
构造函数引用