临别殷勤重寄词,词中有誓两心知。
概述
在Java 8中,我们可以使用class::methodName类型的语法从类或对象中引用方法。接下来我们了解一下Java 8中不同类型的可用方法引用。
方法引用的类型
Java 8允许四种类型的方法引用。
方法引用描述方法引用示例引用静态方法用于从类中引用静态方法Math :: max等同于Math.max(x,y)从实例引用实例方法使用对所提供对象的引用引用实例方法System.out :: println等效于System.out.println(x)从类类型引用实例方法对上下文提供的对象的引用调用实例方法String :: length等效于str.length()引用构造函数引用构造函数ArrayList :: new等效于new ArrayList()
方法引用静态方法– Class :: staticMethodName
使用静态方法Math.max()的示例。
List integers = Arrays.asList(1,12,433,5);Optional max = integers.stream().reduce( Math::max );max.ifPresent(value -> 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("how