Использовать переменную внутри переменной? - PullRequest
3 голосов
/ 24 июня 2010

У меня есть несколько полей, каждое из которых выглядит следующим образом:

field1
field2
field3
...

Используя цикл со счетчиком, я хочу иметь возможность сказать fieldx.Где х - значение счетчика в этом цикле.Это означает, что если в моем массиве 6 записей, поля fields1 - field6 будут иметь значения.

Возможно ли fieldx?

Ответы [ 3 ]

11 голосов
/ 24 июня 2010

Вы можете сделать это с отражением , но в целом лучше, если вы можете объявить свои поля в массиве. Вместо:

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 голос
/ 24 июня 2010

В качестве альтернативы, используя простой старый массив (см. Ответ Марка), вы можете использовать Arraylist.Объявите ваши поля следующим образом:

ArrayList<SomeType> fields = new ArrayList<SomeType>();

Затем, после ввода полей (скорее всего, с использованием fields.add(SomeType t), вы можете выполнить итерацию с помощью:

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

ArrayLists иметь все то же самоеОсобенности массивов с некоторыми дополнительными преимуществами, такими как совместимость с обобщениями.

Также обратите внимание, что начиная с Java 5, вы можете использовать циклы for-each с массивами! Таким образом, вместо того, чтобы отслеживать значения и помнить, нужно ли вамчтобы вызвать length или size(), вы можете использовать цикл for-each.

0 голосов
/ 24 июня 2010

Я думаю, вам придется пройти через отражение.Посмотрите на пакет java.lang.reflect, в частности класс Field.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...