Bei der Java-Programmierung besteht häufig die Notwendigkeit, den Namen einer Variablen abzuleiten. Dies kann beispielsweise zum Debuggen eines Programms oder zum Erstellen von Fehlermeldungen mit Variableninformationen nützlich sein. Sie können einige einfache Möglichkeiten verwenden, um den Namen einer Variablen in Java abzuleiten, und in diesem Artikel werden wir einige davon betrachten.
Eine der einfachsten Möglichkeiten, den Namen einer Variablen abzuleiten, besteht darin, eine Methode zu verwenden getClass(). Diese Methode gibt ein Objekt vom Typ zurück Class, die Informationen über den Variablentyp enthält. Wir können die Methode verwenden getSimpleName() um den Klassennamen einer Variablen zu erhalten. Zum Beispiel:
int number = 5;
System.out.println(number.getClass().getSimpleName()); // output: int
Eine andere Möglichkeit, den Namen einer Variablen abzuleiten, besteht darin, den Namen einer Variablen zu verwenden Reflexion. Reflektion ermöglicht es Ihnen, Informationen über Klassen, Schnittstellen und Objekte während der Programmausführung zu erhalten. Wir können Klassen aus dem Paket verwenden java.lang.reflect um auf Variablenfelder und deren Namen zuzugreifen. Zum Beispiel:
int number = 5;
Field field = number.getClass().getDeclaredField("number");
System.out.println(field.getName()); // output: number
Es ist auch möglich, einen einfachen Trick mit einer inneren Klasse zu verwenden, um auf den Variablennamen zuzugreifen. Zum Beispiel:
int number = 5;
class VarName private int number;
>
String varName = new VarName().getClass().getDeclaredFields()[0].getName();
System.out.println(varName); // output: number
Es gibt mehrere Möglichkeiten, den Namen einer Variablen in Java auszugeben:
- Verwenden der compareTo() -Methode.
- Reflexion ( Reflection ) verwenden.
- Verwenden von Bibliotheken von Drittanbietern.
Mit der compareTo() -Methode der Comparable-Schnittstelle können Sie Objekte vergleichen und ein Vergleichsergebnis zurückgeben. Wenn das Ergebnis Null ist, bedeutet dies, dass die Objekte gleich sind. In diesem Fall können Sie den Variablennamen als Wert verwenden, der mit einer anderen Zeichenfolge verglichen wird.
Die Reflection-Klasse bietet die Möglichkeit, während der Programmausführung programmgesteuert Informationen zu Klassen, Methoden und Feldern abzurufen. Es kann verwendet werden, um den Variablennamen mit der Methode getField() oder GetFields() abzurufen.
Als Alternative können Sie Bibliotheken von Drittanbietern wie Javassist oder ByteBuddy verwenden, mit denen Sie den Bytecode von Java-Klassen dynamisch ändern und auf den Variablennamen zugreifen können.
Verwenden der Funktion getClass()
Um die Funktion getClass() zu verwenden, müssen Sie sie für das Objekt aufrufen, dessen Variablenname wir ausgeben möchten. Zum Beispiel:
String name = "John";Class cls = name.getClass();System.out.println(cls.getSimpleName());
Der Vorteil der Verwendung der Funktion getClass() besteht darin, dass Sie den Variablennamen auch dann abrufen kann, wenn der Variablentyp während der Kompilierungsphase nicht bekannt ist. Dies ist besonders nützlich bei der Arbeit mit Vererbung und Polymorphie, wenn der Objekttyp nur zur Laufzeit des Programms definiert werden kann.
Verwenden des instanceOf-Operators
Mit dem instanceOf-Operator können Sie den Typ des in einer Variablen gespeicherten Objekts definieren und anhand dieser Informationen den Namen des Objekts anzeigen. Hier ist ein Beispielcode:
if (myObj instanceof MyClass) System.out.println("Die Variable myObj gehört zur Klasse MyClass");
>
Wenn in diesem Beispiel die Variable myObj eine Instanz der Klasse MyClass oder ein Nachkomme der Klasse MyClass ist, wird die Meldung "Die Variable myObj gehört zur Klasse MyClass" angezeigt.
Auf diese Weise können Sie den Variablentyp flexibler und genauer definieren und je nach Typ entsprechende Aktionen ausführen.
Reflexion verwenden
Ein nützlicher Aspekt der Reflexion ist die Möglichkeit, den Namen einer Variablen und ihre Werte zu erhalten. Mithilfe von Reflektion in Java können Sie auf ein Objektfeld zugreifen und dann seinen Namen abrufen.
-
Sie müssen zuerst einen Verweis auf die Klasse erhalten, um Informationen zu ihren Feldern zu erhalten:
Class clazz = MyClass.class;Field[] fields = clazz.getDeclaredFields();for (Field field : fields)
Jetzt können Sie Reflektion verwenden, um den Variablennamen in Java zu erhalten. Denken Sie daran, dass die korrekte Verwendung von Reflexion schwierig sein kann, daher wird empfohlen, sie mit Vorsicht zu verwenden und nur in Fällen, in denen andere alternative Methoden nicht möglich sind.