Я хотел бы назначить набор переменных в java следующим образом:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
Как я могу добиться этого на Java?
java
variables
dynamic-variables
Ашиш Ананд
источник
источник
Ответы:
В Java это не так. В Java нет динамических переменных. Переменные Java должны быть объявлены в исходном коде 1 .
В зависимости от того, чего вы пытаетесь достичь, вы должны использовать массив, a
List
или aMap
; напримерОтражение можно использовать для динамической ссылки на переменные, объявленные в исходном коде. Однако это работает только для переменных, которые являются членами класса (т.е. статические поля и поля экземпляра). Это не работает для локальных переменных. См. "Быстрый и грязный" пример @fyr.
Однако делать такие вещи в Java без надобности - плохая идея. Он неэффективен, код более сложен, и, поскольку вы полагаетесь на проверку во время выполнения, он более хрупкий. И это не «переменные с динамическими именами». Его лучше описать как динамический доступ к переменным со статическими именами.
1 - Это утверждение немного неточно. Если вы используете BCEL или ASM, вы можете «объявить» переменные в файле байт-кода. Но не делай этого! В этом безумие!
источник
Map<String, T>
вместо этого, не начинайте возиться с вашим фактическим кодом.Если вы хотите получить доступ к каким-то динамическим переменным, вы можете использовать отражение. Однако Reflection работает не для локальных переменных. Это применимо только к атрибутам класса.
Грубый, быстрый и грязный пример:
Вам нужно улучшить этот код различными способами, это всего лишь пример. Это также не считается хорошим кодом.
источник
Вам нужен именованный массив. Я хотел написать такой код:
источник
Вы должны использовать
List
илиarray
вместоИли
Или даже лучше
источник
Динамические имена переменных в Java
Такого не существует.
В вашем случае вы можете использовать массив:
Для более общих
(name, value)
пар используйтеMap<>
источник
Попробуйте так:
источник
Вы этого не сделаете. Самое близкое, что вы можете сделать, - это работать с Maps, чтобы имитировать это, или определить свои собственные объекты для работы.
источник