2017-02-20 27 views
-4

我很新的Java。一个更好的方法来取代许多如果条件

我想通知,如果有一种智能的方式来取代许多 如果声明。

问题: 假设我有一个验证器类来检查传入消息中的标记。每个标签都可以是强制性的或不适用于我的应用

而不是使用很多if语句的:

if (isExistTag1) 
else if (isExistTag2) 
else if (isExistTag3) 
. 
. 
. 
else if (isExistTagN) 

什么可以改进的方式?

谢谢。

+1

您是否尝试过切换案例 – SachinSarawgi

+0

所有这些“if”块是否都做了相同的事情?类似的事情? – khelwood

+1

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –

回答

3

三分之一的许多可能性是使用一个列表:

private List<String> validTags = Arrays.asList(
    tag1, // 
    tag2, // 
    tag3); 

public boolean isTagValid(String tag) { 
    return validTags.contains(tag); 
} 
1

如果你的条件语句之一是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还提供其他功能接口。

+0

每个标记都可以为true或false。当我得到第一个假我将丢弃传入的消息 – Asfbar

+0

你能提供一些关于如何使用这个列表的更多信息吗?什么是翻译布尔? – Chris311

相关问题