Ich möchte eine Reihe von Variablen in Java wie folgt zuweisen:
int n1,n2,n3;
for(int i=1;i<4;i++)
{
n<i> = 5;
}
Wie kann ich dies in Java erreichen?
java
variables
dynamic-variables
Ashish Anand
quelle
quelle
Antworten:
So machen Sie es in Java nicht. In Java gibt es keine dynamischen Variablen. Java-Variablen müssen im Quellcode 1 deklariert werden .
Je nachdem, was Sie erreichen möchten, sollten Sie ein Array verwenden, a
List
oder aMap
; z.BMit Reflection können Sie dynamisch auf Variablen verweisen , die im Quellcode deklariert wurden. Dies funktioniert jedoch nur für Variablen, die Klassenmitglieder sind (dh statische Felder und Instanzfelder). Es funktioniert nicht für lokale Variablen. Siehe @ fyrs "schnelles und schmutziges" Beispiel.
Es ist jedoch eine schlechte Idee, solche Dinge in Java unnötig zu tun. Es ist ineffizient, der Code ist komplizierter und da Sie sich auf die Laufzeitprüfung verlassen, ist er anfälliger. Und das sind keine "Variablen mit dynamischen Namen". Es wird besser als dynamischer Zugriff auf Variablen mit statischen Namen beschrieben.
1 - Diese Aussage ist etwas ungenau. Wenn Sie BCEL oder ASM verwenden, können Sie die Variablen in der Bytecode-Datei "deklarieren". Aber tu es nicht! Auf diese Weise liegt der Wahnsinn!
quelle
Map<String, T>
stattdessen a und beginnen Sie nicht, mit Ihrem tatsächlichen Code herumzuspielen.Wenn Sie auf die Variablen in irgendeiner Art von Dynamik zugreifen möchten, können Sie Reflektion verwenden. Reflection funktioniert jedoch nicht für lokale Variablen. Sie gilt nur für Klassenattribute.
Ein grobes, schnelles und schmutziges Beispiel ist:
Sie müssen diesen Code auf verschiedene Weise verbessern. Dies ist nur ein Beispiel. Dies wird auch nicht als guter Code angesehen.
quelle
Was Sie brauchen, heißt Array. Ich wollte folgenden Code schreiben:
quelle
Sie sollten
List
oderarray
stattdessen verwendenOder
Oder noch besser
quelle
Dynamische Variablennamen in Java
gibt es nicht.
In Ihrem Fall können Sie Array verwenden:
(name, value)
Verwenden Sie für allgemeinere PaareMap<>
quelle
Versuchen Sie Folgendes:
quelle
Das tust du nicht. Das Beste, was Sie tun können, ist, mit Maps zu arbeiten, um es zu simulieren, oder Ihre eigenen Objekte zu definieren, mit denen Sie sich befassen möchten.
quelle