我有几个领域,每一个都是这样的:在变量中使用变量?
field1
field2
field3
...
使用了计数器循环,我想能够说fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,fields1 - field6将被赋予值。
是否可以使用fieldx?
我有几个领域,每一个都是这样的:在变量中使用变量?
field1
field2
field3
...
使用了计数器循环,我想能够说fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,fields1 - 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];
}
我认为你将不得不通过反射。看看java.lang.reflect
包,特别是Field
类。
谢天谢地,他会用数组来代替。 – 2010-06-24 19:03:15
作为使用普通ol数组的替代方法(请参阅Mark的回答),您可以使用Arraylist
。声明你的领域,像这样:
ArrayList<SomeType> fields = new ArrayList<SomeType>();
然后投入的领域(最有可能使用fields.add(SomeType t)
后,您可以重复使用:
for (Sometype t : fields)
{
// Do stuff with t
}
ArrayLists
有阵列的所有相同的功能有一些额外的好处,与泛型相似
另请注意,从Java 5开始,您可以使用for-each循环与数组!因此,而不是跟踪indeces并记住您是否需要调用length
或size()
,你可以使用for-each循环。
我同意马克。使用数组索引而不是字段名将是我会这样做的方式。 – badpanda 2010-06-24 19:01:58