在Java中,方法引用是一种简化Lambda表达式的写法。它允许你引用已经存在的方法或构造函数。方法引用定义的语法如下:
::静态方法名
::实例方法名
::类方法名
::构造方法名
以下是各种类型的方法引用的示例:
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.sort(String::compareToIgnoreCase);
这里,我们使用了String::compareToIgnoreCase
静态方法引用来对字符串列表进行排序。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
names.sort((name1, name2) -> name1.length() - name2.length());
// 使用实例方法引用简化代码
names.sort(String::length);
在这个例子中,我们使用了String::length
实例方法引用来按字符串长度对列表进行排序。
class MyClass {
public static int add(int a, int b) {
return a + b;
}
}
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.sort((a, b) -> MyClass.add(a, b));
// 使用类方法引用简化代码
numbers.sort(MyClass::add);
这里,我们使用了MyClass::add
类方法引用来对整数列表进行排序,通过调用MyClass
类的静态方法add
来计算两个整数的和。
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
List<String> uppercasedNames = names.stream()
.map(String::toUpperCase)
.collect(Collectors.toList());
在这个例子中,我们使用了String::toUpperCase
构造方法引用来将字符串列表中的每个元素转换为大写形式。