在变量中使用变量?

我有几个字段,每个字段都是这样的:

field1 field2 field3 ... 

使用带计数器的循环,我希望能够说fieldx。 其中x是该循环中计数器的值。 这意味着如果我的数组中有6个条目,则field1 – field6将被赋予值。

fieldx可能吗?

你可以用reflection来做,但一般情况下,如果你可以在数组中声明你的字段会更好。 代替:

 SomeType field1; SomeType field2; SomeType field3; ... SomeType field6; 

你可以这样做:

 SomeType[] fields = new SomeType[6]; 

然后你可以循环设置值的数组:

 for (int i = 0; i < fields.length; ++i) { fields[i] = yourValues[i]; } 

作为使用普通ol’arrays的替代方案(参见Mark的答案),您可以使用Arraylist 。 像这样声明你的字段:

 ArrayList fields = new ArrayList(); 

然后在放入字段(最有可能使用fields.add(SomeType t) ,您可以使用以下内容进行迭代:

 for (Sometype t : fields) { // Do stuff with t } 

ArrayLists具有所有相同的数组function,并具有一些额外的好处,例如与generics的兼容性。

另请注意,从Java 5开始,您可以使用for-each循环和数组! 因此,不是跟踪indeces并记住是否需要调用lengthsize() ,而是可以使用for-each循环。

我想你必须经历反思。 看看java.lang.reflect包,特别是Field类。