2012-02-05 2 views
2

Мне было интересно, если в Java существует какой-либо способ дать новой переменной имя, которое является значением другой переменной. Нижеприведенный код является нерабочим примером того, что я пытаюсь сделать.Значение переменной Java как новое имя переменной

int a = 0; 
while(true){ 
    String (a) = "newValue"; 
    a = a + 1; 
} 

или

String b = "newVariableName"; 
int (b) = 1; 

Спасибо за любую помощь, оказанную.

+1

Что вы пытаетесь достичь? Зачем вам нужна такая функциональность? – Tim

+0

Почти гарантировано, что вам на самом деле это не нужно или нужно. Это проблема XY. * Edit. * Вы также должны принять в заблуждение правило программирования Zero-One-Many. –

+0

Java не работает таким образом, и не только то, что имя переменной намного менее важно, чем вы думаете. На самом деле в * скомпилированном * коде имя почти не существует. Если вы хотите связать объект со строкой, используйте Map или объект со смежным номером, используйте массив. –

ответ

0

Вы не можете создавать имена динамических переменных в Java. Я бы рекомендовал разместить эти переменные на карте со строкой в ​​качестве ключа. Ключ может быть любой Строкой, которую вы хотите.

+0

Извините, что вернулся поздно. Я нашел еще один способ выполнить эту работу, но после большого чтения, что нет, динамические переменные не могут использоваться на Java. Я делал это с PHP раньше и искал аналогичный метод. Хотя сопоставление данных с использованием таких методов, как HashMaps, будет работать. Как полагают другие. Спасибо за помощь, ребята! – Arran

1

Вы пытаетесь создать массив или список или словарь.

+0

На самом деле это не ответ. На первый взгляд, ОП просит какое-то отражение. –

+2

@ KerrekSB: Это не то, о чем он просит; это то, что он на самом деле ходит. – SLaks

0

Вы не можете этого сделать. Используйте словарь или карту для сохранения значений.

0

Нет, в Java нет возможности сделать такую ​​вещь. Самое близкое, что вы могли бы сделать, это создать код во время выполнения и загрузить новый класс с полями с динамическими именами.

Возможно, вы захотите рассмотреть нечто более простое, например, экземпляр HashMap.

3

Нет, это невозможно. Можно создать новый объект и добавить его в массив или какой-то список. Затем вы можете ссылаться на новый объект по индексу. Так грубый пример может быть:

Object[] a = new Object[30]; 

for(int i = 0; i < 30; i++) 
{ 
a[i] = new Object(); 
} 

, а затем вы можете использовать

a[some number].someFunction(); 

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

0

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

Map<String,Field> 

не работает. Вместо этого используйте javascript :)