首页 > 解决方案 > 使用嵌套方法的方法引用运算符很热门?

问题描述

嗨,我想知道如何将方法引用运算符用于嵌套方法。我需要这个来保持代码风格的一致。

我想转换这样的东西

    .filter(a -> a.getB().getC().getD().isE())

像这样

    .filter(A::getB::getC::getD::isE)

即使是这样的事情也可以

    .filter(_.getB().getC().getD().isE())

我想删除这个

    a -> a

标签: javamethod-reference

解决方案


你不能在 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)


推荐阅读