我是Java的新手。
我想知道是否有一种智能方法可以替换许多人 if statement。
问题: 让我们说我有一个验证器类来检查传入消息中的标签。对于我的应用程序,每个标记都是强制性的。
而不是使用很多if语句:
if (isExistTag1)
else if (isExistTag2)
else if (isExistTag3)
.
.
.
else if (isExistTagN)
什么可以改进?
谢谢。
答案 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还提供了其他功能接口。