Java方法引用(Method Reference)是Java 8引入的一种简化Lambda表达式的写法。它允许你引用已经存在的方法或构造函数,而不需要在Lambda表达式中重新编写方法体。方法引用适用于以下场景:
- 简化Lambda表达式:当你可以直接引用一个方法或构造函数时,使用方法引用可以使代码更简洁。例如,如果你有一个简单的函数式接口,如
Predicate
,你可以直接使用方法引用代替Lambda表达式。
PredicateisNotEmpty = String::isEmpty;
- 引用静态方法:当你需要将一个静态方法作为Lambda表达式的目标时,可以使用方法引用。例如,使用
Collections.sort()
方法对一个列表进行排序时,可以使用方法引用来简化代码。
Listlist = Arrays.asList("a", "b", "c"); Collections.sort(list, String::compareTo);
- 引用实例方法:当你需要将一个实例方法作为Lambda表达式的目标时,可以使用方法引用。例如,使用
Stream.map()
方法对集合中的元素进行处理时,可以使用方法引用来简化代码。
Listlist = Arrays.asList("a", "b", "c"); List lengths = list.stream() .map(String::length) .collect(Collectors.toList());
- 引用构造函数:当你需要将一个类的构造函数作为Lambda表达式的目标时,可以使用方法引用。例如,使用
Stream.map()
方法将一个集合转换为另一个集合时,可以使用方法引用来简化代码。
Listlist = Arrays.asList("a", "b", "c"); List uppercased = list.stream() .map(String::toUpperCase) .collect(Collectors.toList());
- 复用现有方法:方法引用可以让你在Lambda表达式中复用已经存在的方法,而不需要重新编写方法体。这有助于减少代码重复和提高代码的可读性。
总之,方法引用在Java中是一种简化Lambda表达式的写法,适用于许多场景,特别是当你需要引用已经存在的方法或构造函数时。