我有一个变量,x
。
我想调用一个方法 m()
只有当 x
是两个可能值之一时。
当调用m()
时,我想传递一个参数给它,它的值取决于x
的值。
有没有一种方法可以在 Java 中做到这一点,而无需多次检查 x
的值,并且只在一个地方调用/写入 m()
(即不在 if
语句的多个分支中)?
我正在接受的一个解决方案:
switch (x) {
case 1:
y = "foo";
break;
case 2:
y = "bar";
break;
default:
y = null;
break;
}
if (y != null) m(y);
但我忍不住觉得这是技术上检查 x
两次,只是通过为第二次检查添加“代理”来掩盖这一事实。
(澄清约束的原因:在阅读代码时,我很难理解当分支之间存在高度重复时分支很多的逻辑 - 它变成了“找不同”的游戏而不是简单地能够看到正在发生的事情。我更喜欢积极地重构这种重复,这是我在 Ruby、JS 和其他语言中很好的习惯;我希望我能学会为 Java 做同样的事情并使代码更容易让我和其他人一目了然。)
最佳答案
我不确定你想做什么,但你可以使用 Map 从 'x' 获取 'y' 参数
Map<Integer, String> map = new HashMap<>();
map.put(1, "foo");
map.put(2, "bar");
if (map.containsKey(x)) {
m(map.get(x));
}
关于java - 无需两次检查值即可表达此 Java 条件的最简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39959296/