0%

java8方法引用

说明

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