在我的Java"Pear"类中,我有一个大约1000个变量的庞大列表:
public class Pear {
private String
a100,
a110,
a120,
...
etc.
}
我需要根据香蕉的给定值设置这些变量中的每一个,所以我有一个第一个基本想法来使用开关案例:
public class Pear {
...
public void setValues(Banana aBanana) {
switch (aBanana.getValueName()) {
case "300886":
a100 = aBanana.getValue();
break;
case "309606":
a110 = aBanana.getValue();
break;
case "300843":
a120 = aBanana.getValue();
break;
/* ...and so on for 1000 variables*/
}
}
}
,但我觉得这不是实现这一目标的好方法,而且这既不是可读性也不是可维护。如何更换此开关盒?
编辑:我认为对"设置值"的调用存在误解。它将像这样称呼(我添加了一些梨(:
public static void main(String[] bananas) {
Pear pear = new Pear();
pear.setValues(bananas[0]);
pear.setValues(bananas[1]);
pear.setValues(bananas[2]);
...etc for 200 times approximately...
}
拥有数百个变量来存储相同类型的多个值是错误和难以维护的空间(这导致了这个问题(。
如果您更改了数据结构,您将摆脱所有不必要的变量声明,并且您将针对值(代码(而不是变量名称对逻辑进行编码。
Map 旨在用于将键与值(在您的情况下,值名称与值(相关联。
Map<String, String> valueMap = new HashMap<>();
public void setValues(Banana aBanana) {
valueMap.put(aBanana.getValueName(), aBanana.getValue());
}
现在这在其他地方引入了更改,但这是合理的,因为典型的"读取"代码也将从相同的"值名称"开始:
public String getValue(String valueName) {
return this.valueMap.get(valueName);
}