在变量中使用变量?

时间:2010-06-24 18:55:30

标签: java variables loops

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

field1
field2
field3
...

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

fieldx可能吗?

3 个答案:

答案 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并记住是否需要调用lengthsize()

答案 2 :(得分:0)

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