嗨,我想知道如何将方法引用运算符用于嵌套方法。
我需要它来保持代码中一致的样式。
我想转换这样的东西
.filter(a -> a.getB().getC().getD().isE())
像这样
.filter(A::getB::getC::getD::isE)
即使这样的事情也可以
.filter(_.getB().getC().getD().isE())
我要删除这个
a -> a
最佳答案
您无法在Java中执行任何操作。当_
在其他基于JVM的语言中可用时,不支持嵌套方法引用语法。 Groovy具有it
。
除非使用a -> a
的某些变体,否则除非将流管道重写为:
.map(A::getB)
.map(B::getC)
.map(C::getD)
.filter(D::isE)
但是,上面有
D
而不是A
的流。您还可以通过添加新方法来修改类
A
public boolean hasE() {
return getB().getC().getD().isE();
}
这使您可以执行
filter(A::hasE)
。