在变量中使用变量?
我有几个字段,每个字段都是这样的:
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并记住是否需要调用length
或size()
,而是可以使用for-each循环。
我想你必须经历反思。 看看java.lang.reflect
包,特别是Field
类。