Java 8短路许多连续方法返回一个布尔值

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (83)

我正在寻找一种优雅的方法来短路许多返回布尔值的连续方法。

Ex见下面的例子。可以使用lambdas进行流式传输或实现吗?

public boolean outerMethod() {

    if(booleanMethod1() && booleanMethod2() && booleanMethod3() && ...) {       
        // Do work
    } else {
        // Do something else
    }

}
提问于
用户回答回答于

我不认为“短路”是你正在寻找的词。这具有特定的含义

如果你想要做的是将你的条件组合成一个较短的行,将它们组合成一个函数是一种常见的模式。

if (allBooleanMethods()) {
    // Do work
} else {
    // Do something else
}

...

private boolean allBooleanMethods() {
    boolean result = booleanMethod1();
    result = result && booleanMethod2();
    result = result && booleanMethod3();
    return result;
}
用户回答回答于

如果我的名单condition1 && condition2 && ... && conditionN太长,我最喜欢的重构通常是

boolean theMeaningOfANDingAllConditions = condition1 
                                       && condition2 
                                       && ... 
                                       && conditionN;
if (theMeaningOfANDingAllConditions) {
    // Do work
} else {
    // Do something else
}

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励