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