嗨,我想知道如何将方法引用运算符用于嵌套方法。
我需要它来保持代码中一致的样式。

我想转换这样的东西

    .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)

10-05 19:06