2013-08-13 2 views
0

У меня есть строка, которая содержит имя целой переменной, например:считанное значение переменной с именем переменной

int branchControlFlow1 = 2; 
String branchField = "branchControlFlow1"; 

возможен доступ значение переменной branchControlFlow1, используя строку (branchField), что содержит имя переменной?

Переменная "branchControlFlow1" обязательно должна быть целочисленного типа.

Благодарим за помощь!

ответ

1

Вы должны действительно использовать карту/ArrayList целых чисел вместо. Карты являются ключевыми (строка или любой объект) для значения, тогда как списки (arraylist или связанный список) являются int-> Entry.

Если нет, вам необходимо обратиться к темная магия отражение. Я объясню это колдовство внизу. Я делаю не несут ответственность за головные боли, тошноту, поражение электрическим током, удушение, утопление, насильственное утопление 1600 депутатами, любые исключения, любые убытки, случайные или косвенные или другие проблемы.

В более серьезной ноте это приводит к неприятному штрафу за производительность при частом вызове или во временном критическом коде. Минимизируйте отражение, назначив значение, которое вы получаете, вместо того, чтобы получать его каждый раз, когда вам это нужно.

Сначала получите экземпляр объекта класса. Если поле в классе под названием FooClass, используйте:

Class clazz=FooClass.class; 
Field fd=clazz.getField(name); 
int val=fd.getInt(myObjectOfFooClass); 

Вы не можете сделать это для локальных переменных в стеке.

4

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

Однако, если вы попытаетесь сделать это, карта будет более вероятна, чтобы быть лучшим выбором.

Map<String, Integer> map = ... 
map.put("branchControlFlow1", 2); 
int num = map.get("branchControlFlow1"); 
Смежные вопросы