Eu gostaria de atribuir um conjunto de variáveis em java da seguinte maneira:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
Como posso fazer isso em Java?
java
variables
dynamic-variables
Ashish Anand
fonte
fonte
Respostas:
Não é assim que você faz as coisas em Java. Não existem variáveis dinâmicas em Java. As variáveis Java devem ser declaradas no código-fonte 1 .
Dependendo do que você está tentando alcançar, você deve usar um array, a
List
ou aMap
; por exemploÉ possível usar a reflexão para referir-se dinamicamente a variáveis que foram declaradas no código-fonte. No entanto, isso só funciona para variáveis que são membros da classe (ou seja, campos estáticos e de instância). Não funciona para variáveis locais. Veja o exemplo "rápido e sujo" de @fyr.
No entanto, fazer esse tipo de coisa desnecessariamente em Java é uma má ideia. É ineficiente, o código é mais complicado e, como você depende da verificação do tempo de execução, é mais frágil. E isso não é "variáveis com nomes dinâmicos". É melhor descrito como acesso dinâmico a variáveis com nomes estáticos.
1 - Essa afirmação é ligeiramente imprecisa. Se você usar BCEL ou ASM, você pode "declarar" as variáveis no arquivo bytecode. Mas não faça isso! Essa é a loucura!
fonte
Map<String, T>
, não comece a mexer com seu código real.Se você quiser acessar as variáveis de algum tipo de dinâmica, você pode usar reflexão. No entanto, o Reflection não funciona para variáveis locais. Só é aplicável para atributos de classe.
Um exemplo rápido e sujo é este:
Você precisa melhorar este código de várias maneiras, é apenas um exemplo. Isso também não é considerado um bom código.
fonte
O que você precisa é um array nomeado. Eu queria escrever o seguinte código:
fonte
Você deve usar
List
ou emarray
vezOu
Ou melhor ainda
fonte
Nomes de variáveis dinâmicas em Java
Não existe tal coisa.
No seu caso, você pode usar array:
Para
(name, value)
pares mais gerais , useMap<>
fonte
Tente desta forma:
fonte
Você não. A coisa mais próxima que você pode fazer é trabalhar com o Maps para simulá-lo ou definir seus próprios objetos para lidar com eles.
fonte