Java 8 | 方法引用

在 Java 8 中,我们可以通过 class::methodName 这种语法来引用类或者示例的方法。

方法引用比较简单,我们直接使用例子来学习。需要知道 Java 8 中有4种类型的方法引用。

引用静态方法 - Class:staticMethodName

List integers = Arrays.asList(1,12,433,5);
Optional max = integers.stream().reduce(Math::max);
max.ifPresent(System.out.println(value));

输出

433

使用实例引用实例方法 - ClassInstance::instanceMethodName

在上面的例子中,使用 System.out.println(value) 来打印出了最大值。我们同样可以使用 System.out::println 来打印。

List integers = Arrays.asList(1,12,433,5);
Optional max = integers.stream().reduce( Math::max );
max.ifPresent(System.out::println);

输出

433

使用类引用实例方法 - Class::instanceMethodName

这个例子中,s1.compareTo(s2) 可以用 String::compareTo 代替。

 List strings = Arrays
                .asList("I", "Love", "China", "Ever", "AND", "Forever");

 List sorted = strings
                .stream()
                .sorted()
                .collect(Collectors.toList());

System.out.println(sorted);

List sortedAlt = strings
                .stream()
                .sorted(String::compareTo)
                .collect(Collectors.toList());

System.out.println(sortedAlt);

输出:

[AND, China, Ever, Forever, I, Love]
[AND, China, Ever, Forever, I, Love]

引用构造函数 - Class::new

List integers = IntStream
                .range(1, 100)
                .boxed()
                .collect(Collectors.toCollection( ArrayList::new ));
 
Optional max = integers.stream().reduce(Math::max);
 
max.ifPresent(System.out::println);

输出:

99

上面就是 Java 8 中的 4 种方法引用。

你可能感兴趣的:(Java 8 | 方法引用)