Bootstrap

使用Java8中的双冒号运算符(::)调用方法

一直搞不明白双冒号运算要怎么使用,今天在《Java8实战》中看到相关内容,讲解的比较详细,参考这篇文章,总结一下,希望能帮助大家,如果有兴趣,也可以直接看《Java8实战》这本书

双冒号运算就是Java中的方法引用,他是一种更简洁的lambda表达式,一些情况下,比lambda表达式更易读,更自然。

注意,方法引用不需要括号

构建方法:

  1. 静态方法
    Lambda:(args) -> ClassName.staticMethod(args)
    方法引用(::):ClassName::staticMethod

     

  2. lambda表达式参数的实例
    Lambda:(arg, rest) -> arg.instanceMethod(rest)
    //ClassName是arg所属的类
    方法引用(::):ClassName::instanceMethod

     

  3. 外部变量的实例方法
    Lambda:(args) -> expr.instanceMethod(args)
    方法引用(::):expr::instanceMethod

     

从以上来看,出现在Lambda表达式中的参数在使用方法引用时,参数都是被省略掉的(第1、2种情况是用其所属类代替了)。

例如:

package com.xiuyong.zhi.test
;