将值分配给arraylist中的数字命名变量

时间:2013-08-21 09:45:40

标签: java

我正在处理的遗留代码使用了21个数字命名的属性,用于3个不同的东西(让我们称之为“firstThing”,“secondThing”和“thirdThing”)。 所以我的类中有firstThing1,firstThing2,... firstThing7属性,secondThing和thirdThing属性相同。

在代码中使用该类对象的任何地方,除了使用正确的数字命名属性之外,它只是复制了7次所有相同的事情的代码片段。不太好。

我没有改变整个画面并重新设计类,而是想至少改变我正在处理的函数:使用冗余代码进行循环,将值添加到之前分配的特定ArrayList中。现在我想知道是否有办法从我的ArrayList中获取所有这些值,并将它们分配给特定的数字命名属性?或者一种测试不同ArrayList的长度并为多个属性赋值的方法?或者我应该复制

if(listOfFirstThings.size() >= 1)
  myObject.setFirstThing1(listOfFirstThings.get(0));

if(listOfFirstThings.size() >= 2)
  myObject.setFirstThing2(listOfFirstThings.get(1));

...

21次分配我需要的一切?

1 个答案:

答案 0 :(得分:3)

重新设计类的方法。你实际上有三个集合 - 很可能是一个集合,每个元素都有三个属性。

Java并不是设计用于使用执行时生成的变量名。你可以用反射来做,但我强烈建议你现在正确地修复它。 (在尝试添加您正在处理的任何新功能之前,我实际上是将其作为重构步骤。)