java lambda 表达式中的双冒号和箭头的用法 ::

先构造一些数据,创建一个User类

java lambda 表达式中的双冒号和箭头的用法 ::

java lambda 表达式中的双冒号的用法 ::

双冒号运算就是Java中的[方法引用],[方法引用]的格式是

类名::方法名

如下图所示

User是一个类, getAge是方法名,注意是方法名呀,后面没有括号()的。为什么不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。

java lambda 表达式中的双冒号和箭头的用法 ::

 

 

可以替换成,如下图 

 e -> e.getAge()

User -> User.getAge()

java lambda 表达式中的双冒号和箭头的用法 ::

 

这种[方法引用]或者说[双冒号运算]对应的参数类型是Function<T,R> T表示传入类型,R表示返回类型。比如表达式User.getAge(); 传入参数是User,返回值是User.getAge(),那么方法引用User::getAge就对应着Function<User,Integer>类型。

如下图:

java lambda 表达式中的双冒号和箭头的用法 ::