我从来没有看到“switch”中的代码“case”被花括号括起来 - {}。我可以使用大括号来隐藏变量吗?或者这是一种不好的做法?有什么可能的后果?
我需要使用开关,其中每个案例都由相同类型的变量组成(我认为最好保留相同的名称),但它们具有不同的值。
Dialog dialog;
switch (id) {
case ID_1: {
String[] keys = ...; // some array
String[] values = ...;
...
return dialog;
}
...
case ID_2: {
String[] keys = ...; // different values
...
return dialog;
}
default:
return null;
}
}
答案 0 :(得分:4)
我可以使用大括号隐藏变量吗?
是的,你可以。
或者这是一种不好的做法?
这可能是您可以重构代码的一个标志 - 但如果没有看到代码在每个case
中执行的操作,就很难说清楚。
可能产生的后果是什么?
除了限制这些变量的范围之外,这是你的目标。
答案 1 :(得分:1)
当你在个别情况下需要不同的局部变量时,这确实很常见。
如果你需要很多它们,特别是当它们几乎完全相同时,可能表明代码被过度复制粘贴。
除非每种情况下的代码除了数据之外都有显着差异,例如,将键和值保存在数组或hastable中可能会有所帮助。
keys = dialog_data[id].keys;
values = dialog_data[id].values;
这个问题实际上并没有足够的信息来确定是否属于这种情况。
答案 2 :(得分:0)
有时如果代码中有一些常量,你可以将它们导出到另一个带有public-static-final字段的类中,它可以解决你的问题。我不能多说,因为我们看不到整个代码。
答案 3 :(得分:0)
您可以将对话框数据保存在HashTable中。通过这种方式,您可以遍历键集并相应地更改数据值。