美文网首页
方法引用的实例

方法引用的实例

作者: 逍遥白亦 | 来源:发表于2020-12-27 19:15 被阅读0次

method reference example

在Java8里,我们可以使用“类::方法名”这种语法来表示,类或对象对方法的引用。让我们了解 java 8 中不同类型的可用方法引用。

方法引用的类型

Java8允许四种对于方法的引用

方法引用 描述 实例
静态方法的引用 对类中静态方法的引用 Math::max equivalent to Math.max(x,y)
对指定实例方法的引用 使用一个实例对对象的方法引用 System.out::println equivalent to System.out.println(x)
对类的实例方法的引用 在引用上下文提供的对象时调用实例方法 String::length equivalent to str.length()
构造方法的引用 引用一个构造方法 ArrayList::new equivalent to new ArrayList()

静态方法的引用方法 - Class::staticMethodName

一个使用Math.max()静态方法的实例

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

Output:

433

对指定实例方法的引用方法 – ClassInstance::instanceMethodName

在上边的例子中,我们使用 System.out.println(value) 打印最大值。我们可以使用System.out::println 进行打印。

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

Output:

433

对类的实例方法的引用方法 – Class::instanceMethodName

在这个例子中,s1.compareTo(s2) 类似String::compareTo的引用

List<String> strings = Arrays
        .asList("how", "to", "do", "in", "java", "dot", "com");
 
List<String> sorted = strings
        .stream()
        .sorted((s1, s2) -> s1.compareTo(s2))
        .collect(Collectors.toList());
 
System.out.println(sorted);
 
List<String> sortedAlt = strings
        .stream()
        .sorted(String::compareTo)
        .collect(Collectors.toList());
 
System.out.println(sortedAlt);

Output:

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

构造方法的引用 - Class::new

第一个方法可以被改为创建一个包含1到100的integers的列表。使用lambda表达式会变的很简单。创建一个ArrayList的实例,使用ArrayList::new。

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

相关文章

  • 双冒号方法引用

    类别使用形式静态方法引用类名 :: 静态方法名实例方法引用对象名(引用名) :: 实例方法名类方法引用类名 :: ...

  • Java8-Lambda 方法的引用

    实例方法和类方法 引用实例方法 自动把调用方法的时候的参数,全部传给引用的方法 <函数式接口> <变量名> = <...

  • 实例方法引用

    通过一个例子熟悉实例方法引用: 已知string中有个实例方法(非静态的)endwith, 想自己写个类封装上面的...

  • 方法引用的实例

    method reference example 在Java8里,我们可以使用“类::方法名”这种语法来表示,类或...

  • Python实例方法、类方法、静态方法

    实例方法,类方法,静态方法都可以通过实例或者类调用,只不过实例方法通过类调用时需要传递实例的引用(python 3...

  • 3.Java8新特性 - 方法引用与构造器

    一.方法的引用 方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用提供了一种引用而不执行方法的...

  • Python 实例方法、类方法和静态方法(转)

    实例方法 实例ik1会传递给self参数,这样self参数就可以引用当前正在调用实例方法的实例。 类方法 Pyth...

  • 新特性5-方法引用

    方法引用使得开发者可以直接引用现存的方法、Java类的构造方法或者实例对象。方法引用和Lambda表达式配合使用,...

  • Vue引入js变量,常量及文件

    1,变量引用外部js: vue实例文件 2,方法调用外部js: vue实例文件 3,变量引用外部js: vue实例文件

  • Lambda表达式(二)

    方法的引用 直接访问类或者实例的已经存在的方法或者构造方法,方法的引用提供了一种引用提供了一种引用而不执行方法的方...

网友评论

      本文标题:方法引用的实例

      本文链接:https://www.haomeiwen.com/subject/srtanktx.html