说明
双冒号( :: )运算符在 Java 8 中被用作方法引用(method reference),方法引用是与 lambda 表达式相关的一个重要特性。
语法
| Kind | Example |
|---|---|
| 对静态方法的引用 | ContainingClass::staticMethodName |
| 对一个特定对象的实例方法的引用 | containingObject::instanceMethodName |
| 对一个任意对象特定类型的实例方法的引用 | ContainingType::methodName |
| 对构造函数的引用 | ClassName::new |
测试
public class MethodReferencesTest {
public static void main(String[] args) {
List<String> list = Arrays.asList("java", "python", "go");
// 静态方法引用
list.stream().forEach(MethodReferencesTest::staticMethod);
// 对象方法引用
list.stream().forEach(new MethodReferencesTest()::method);
List<String> list1 = Arrays.asList("2", "3", "4");
list1.stream().map(Integer::valueOf).forEach(MethodReferencesTest::staticMethod);
}
private void method(String a) {
System.out.println(a);
}
public static void staticMethod(String a) {
System.out.println(a);
}
public static void staticMethod(int a) {
System.out.println("int " + a);
}
}