我有几个字段,每个字段都是这样的:
field1
field2
field3
...
使用带计数器的循环,我希望能够说出fieldx。其中x是该循环中计数器的值。这意味着如果我的数组中有6个条目,则field1 - field6将被赋予值。
fieldx可能吗?
答案 0 :(得分:11)
您可以使用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];
}
答案 1 :(得分:1)
作为使用普通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循环和数组!因此,您可以使用for-each循环,而不是跟踪indeces并记住是否需要调用length
或size()
。
答案 2 :(得分:0)
我认为你必须经历反思。查看java.lang.reflect
包,特别是Field
类。