Je voudrais attribuer un ensemble de variables en java comme suit:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
Comment puis-je y parvenir en Java?
java
variables
dynamic-variables
Ashish Anand
la source
la source
Réponses:
Ce n'est pas ainsi que vous faites les choses en Java. Il n'y a pas de variables dynamiques en Java. Les variables Java doivent être déclarées dans le code source 1 .
En fonction de ce que vous essayez de réaliser, vous devez utiliser un tableau, a
List
ou aMap
; par exempleIl est possible d'utiliser la réflexion pour faire référence dynamiquement à des variables qui ont été déclarées dans le code source. Cependant, cela seulement fonctionne que pour les variables qui sont membres de la classe (c'est-à-dire les champs statiques et d'instance). Cela ne fonctionne pas pour les variables locales. Voir l'exemple "rapide et sale" de @ fyr.
Cependant, faire ce genre de chose inutilement en Java est une mauvaise idée. C'est inefficace, le code est plus compliqué, et comme vous comptez sur la vérification à l'exécution, il est plus fragile. Et ce ne sont pas des "variables avec des noms dynamiques". Il est mieux décrit comme un accès dynamique aux variables avec des noms statiques.
1 - Cette déclaration est légèrement inexacte. Si vous utilisez BCEL ou ASM, vous pouvez «déclarer» les variables dans le fichier bytecode. Mais ne le fais pas! De cette façon, c'est la folie!
la source
Map<String, T>
plutôt un , ne commencez pas à jouer avec votre code réel.Si vous voulez accéder aux variables d'une sorte de dynamique, vous pouvez utiliser la réflexion. Cependant, Reflection ne fonctionne pas pour les variables locales. Elle ne s'applique qu'aux attributs de classe.
Un exemple rapide et sale est le suivant:
Vous devez améliorer ce code de différentes manières, ce n'est qu'un exemple. Ce n'est pas non plus considéré comme un bon code.
la source
Ce dont vous avez besoin est nommé array. Je voulais écrire le code suivant:
la source
Vous devriez utiliser
List
ou à laarray
placeOu
Ou encore mieux
la source
Noms de variables dynamiques en Java
Une telle chose n'existe pas.
Dans votre cas, vous pouvez utiliser array:
Pour des
(name, value)
paires plus générales , utilisezMap<>
la source
Essayez de cette façon:
la source
Vous ne le faites pas. La chose la plus proche que vous puissiez faire est de travailler avec Maps pour le simuler ou de définir vos propres objets à traiter.
la source