java - 如何避免将结果添加到列表中的多个 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);
也许这段代码看起来不是很糟糕,但让我们假设我们需要添加更多条件。你会如何避免它?
初始化类时始终调用此代码,例如在构造函数中。
解决方案
如果您使用的是 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
推荐阅读
- java - 使用事件侦听器读取文件并将内容保存到数组
- botframework - 为什么我的 Teams 中的聊天机器人刷新卡不刷新?
- laravel - 在 Apache + mySQL 环境中的 AWS EC2 上找不到 Laravel ReST API URL 404 - 在此服务器上找不到请求 URL
- python - 使用 python 对 twitter 用户进行聚类
- firebase - 在 Flutter 中从 Firebase 读取数组
- ruby - simple_form 中的自定义包装器:重复输入
- c# - linq Groupby 按“子列表”列出的列表
- three.js - three.js 带有 switch 语句的相机补间
- sql - 查询以获取每个月和上个月的用户数
- javascript - 从多个元素的值创建 JSON 对象的动态数组