我很新的Java。一个更好的方法来取代许多如果条件
我想通知,如果有一种智能的方式来取代许多 如果声明。
问题: 假设我有一个验证器类来检查传入消息中的标记。每个标签都可以是强制性的或不适用于我的应用
而不是使用很多if语句的:
if (isExistTag1)
else if (isExistTag2)
else if (isExistTag3)
.
.
.
else if (isExistTagN)
什么可以改进的方式?
谢谢。
我很新的Java。一个更好的方法来取代许多如果条件
我想通知,如果有一种智能的方式来取代许多 如果声明。
问题: 假设我有一个验证器类来检查传入消息中的标记。每个标签都可以是强制性的或不适用于我的应用
而不是使用很多if语句的:
if (isExistTag1)
else if (isExistTag2)
else if (isExistTag3)
.
.
.
else if (isExistTagN)
什么可以改进的方式?
谢谢。
三分之一的许多可能性是使用一个列表:
private List<String> validTags = Arrays.asList(
tag1, //
tag2, //
tag3);
public boolean isTagValid(String tag) {
return validTags.contains(tag);
}
如果你的条件语句之一是true
,其余都是总是false
,你可以使用数组或的Runnable
小号ArrayList
。基本上,您将拥有所有在其自身方法中的每个条件内部存在的所有逻辑,这些逻辑在数组或ArrayList
内定义。然后,你就只需要在0到你boolean
条件值翻译成int
范围开始,在这一点上,你可以只引用ArrayList
像这样:
List<Runnable> conditions = new ArrayList<>();
conditions.add(new Runnable()->{/*code to execute if condition 0 is true*/});
conditions.add(new Runnable()->{/*code to execute if condition n is true*/});
conditions.get(translatedBoolean).run();
这是一种方法更优雅一点,将消除不需要的处理时间,如果只有最后一个条件是true
如果您需要返回值或传递参数,Java还提供其他功能接口。
您是否尝试过切换案例 – SachinSarawgi
所有这些“if”块是否都做了相同的事情?类似的事情? – khelwood
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –