如何避免将结果添加到列表的多个if语句

在嘴上

我想问你一个主意。我有一个类,其中有很多if语句,可以这样说:

List<String> errors = new ArrayList<>();
boolean errorCodition1 = SuperUtils.calculateIfObjectIsCorrect(this); // rest of them same

if(errorCondition1){
    errors.add(errorsMessage.getSuperError());
}

if(errorCondition2){
    errors.add(errorsMessage.getMinorError());
}

if(errorCondition3){
    errors.add(errorsMessage.getAlmostCriticalError());
}

if(errorCondition4){
    errors.add(errorsMessage.getOverNineThousendError());
}

displayErrors(errors);

也许这段代码看起来并不可怕,但是假设我们需要添加更多条件。您将如何避免呢?

总是在初始化类时调用此代码,因此例如在构造函数中说。

f1sh

如果使用的是Java8和更高版本,则可以通过将if语句提取到函数中来简化此操作:

void addToErrorsIf(boolean errorCondition, List<String> errors, Supplier<String> a) {
  if(errorCondition) {
    errors.add(a.get());
  }
}

然后可以像这样使用它:

addToErrorsIf(errorCodition1, errors, errorsMessage::getSuperError);
addToErrorsIf(errorCodition2, errors, errorsMessage::getMinorError);
//and so on

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章