更换许多if条件的更好方法

时间:2017-02-20 12:11:03

标签: java if-statement

我是Java的新手。

我想知道是否有一种智能方法可以替换许多人 if statement。

问题: 让我们说我有一个验证器类来检查传入消息中的标签。对于我的应用程序,每个标记都是强制性的。

而不是使用很多if语句:

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

什么可以改进?

谢谢。

2 个答案:

答案 0 :(得分:3)

许多可能性中的一个是使用List:

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

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

答案 1 :(得分:1)

如果您的某个条件为true且其余条件始终 false,则您可以使用数组或ArrayList Runnable秒。从本质上讲,您将拥有在其自己的方法内部的每个条件内的所有逻辑,这些逻辑在数组或ArrayList内定义。然后,您只需要将boolean条件值转换为从{0开始的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

如果只有你的最后一个条件为# custom role fact require 'facter' Facter.add(:role) do case Facter.value(:hostname) when /ntp/ then 'ntp-server' when /www/ then 'web-server' else abort 'Hostname does not provide a role.' end end

,这种做法会更加优雅,并且会消除不必要的处理时间

如果需要返回值或传递参数,Java还提供了其他功能接口。