Можно ли использовать строку вместо имени переменной в Java - PullRequest
3 голосов
/ 24 сентября 2011

Я создал 3 переменные

radio1 radio2 radio3

можно ли использовать цикл for и строку String под названием "radio", чтобы добавить счетчик в конце, чтобыполучить переменную?

например что-то вроде этого

for(i=1;i<=3;i++)
    if(("radio" + i).method())
          do something

заранее спасибо

Ответы [ 4 ]

7 голосов
/ 24 сентября 2011

Вы можете использовать объект Radio и использовать вместо него массивы:

Radio[] radios = new Radio[] {radio1, radio2, radio3};
for(i=0;i<3;i++)
    if(radios[i].method())
          do something

Если вы хотите получить доступ к переменным путем формирования их имен, вы также можете использовать API отражения Java . Но это дорогостоящая операция и вообще не рекомендуется.

1 голос
/ 24 сентября 2011

Мне кажется, что вы хотите использовать Словарь или подобную структуру данных, которая позволяет хранить объекты, проиндексированные, например, строкой.

EDIT

Как отмечали несколько человек, HashMap - более современная и лучшая альтернатива.

0 голосов
/ 24 сентября 2011

Наиболее удобный способ - использовать промежуточный массив, подобный следующему:

Radio radio1, radio2, radio3;
for(Radio radio: Arrays.asList(radio1, radio2, radio3))
    if( radio.method() )
        doSomething();

java.util.Arrays предоставляется JDK.

Это работает.Но, пожалуйста, подумайте, сколько раз вам действительно нужно три отдельных Radio экземпляра против того, сколько раз вы заинтересованы не в одном из них, а во всех.В последнем случае поместите три экземпляра в Collection или в массив с самого начала и забудьте о трех отдельных экземплярах.

0 голосов
/ 24 сентября 2011

Вы должны использовать array, чтобы вы могли легко перебирать все из них.

Вы также можете играть со списками, если вы не знаете, сколько предметов будет.

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