您的位置 首页 java

Java 8 方法引用

概述

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", "to", "do", "in", "java", "dot", "com");

List  sorted = strings
 .stream()
 .sorted((s1, s2) -> s1.compareTo(s2))
 .collect(Collectors.toList());

System.out.println(sorted);

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

System.out.println(sortedAlt);
 

输出

[com, do, dot, how, in, java, to]
[com, do, dot, how, in, java, to]
 

引用构造函数- Class::new

可以更新第一种方法以创建1到100的整数列表。使用lambda表达式相当容易。要创建ArrayList的新实例,我们使用ArrayList :: 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 lambda增强功能中的4种方法引用。

原文链接:Java 8 method reference example

文章来源:智云一二三科技

文章标题:Java 8 方法引用

文章地址:https://www.zhihuclub.com/184650.shtml

关于作者: 智云科技

热门文章

网站地图