说明
双冒号( ::
)运算符在 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);
}
}