首页 > 解决方案 > 是否可以缩写删除变量的java函数?

问题描述

在 Java 8 的函数中,有一个快捷方式,即

() -> new ArrayList()

然后显示:

ArrayList::new

在使用流时,我发现自己声明了很多这样的函数:

s.map(var -> var.getFoo()).flatMap(var -> var.parallelStream()).map(var -> var.getBar())

如果前缀是 ,是否还有缩写var -> var.?就像是

s.map(::getFoo()).flatMap(::parallelStream()).map(::getBar())

标签: javalambdasyntaxjava-8functional-interface

解决方案


不是真的,唯一可能的:使用类名作为方法引用:

s.map(FooHolder::getFoo).flatMap(Whatever::parallelStream).map(OwnersOfBar::getBar)

显然,这是相当“更多”的打字。另一方面,它有点冗长,可以很好地告诉您所涉及的类型。


推荐阅读