Ermitteln des Klassennamens in Java
-
Ermitteln des Klassennamens mit
class.getSimpleName()
in Java -
Ermitteln des Klassennamens einer anonymen Klasse mit
getName()
-
Name der Klasse mit
Thread.currentThread().getStackTrace()[1].getClassName()
abrufen
In diesem Tutorial erfahren Sie, wie Sie den Klassennamen in Java mithilfe von vier Methoden ermitteln. Es gibt viele Fälle, in denen wir den Klassennamen in Java abrufen möchten.
Ermitteln des Klassennamens mit class.getSimpleName()
in Java
Dies ist die am häufigsten verwendete Methode, um den Namen einer Klasse zu erhalten. Im folgenden Beispiel haben wir zwei Klassen: GetClassName
mit der Methode main()
und eine weitere Klasse ist ExampleClass
.
In der Klasse GetClassName
verwenden wir ExampleClass.class
, um die Informationen der Klasse zu erhalten. Es gibt eine Class
-Instanz vom Typ ExampleClass
zurück. Jetzt können wir getSimpleName()
mit der classNameInstance
aufrufen, die nur den Klassennamen als String zurückgibt.
public class GetClassName {
public static void main(String[] args) {
Class<ExampleClass> classNameInstance = ExampleClass.class;
String className = classNameInstance.getSimpleName();
System.out.println(className);
}
}
class ExampleClass {
private void exampleFun() {
System.out.println("Just a function in a class");
}
}
Ausgabe:
ExampleClass
Ermitteln des Klassennamens einer anonymen Klasse mit getName()
Eine innere Klasse ohne Namen wird als anonyme Klasse bezeichnet. In diesem Beispiel lernen wir, wie man einen Klassennamen erhält, wenn er anonym ist, oder prüft, ob eine Klasse eine anonyme Klasse hat. Unten erstellen wir ein Interface Example
, um die anonyme Klasse zu instanziieren. In GetClassName
instanziieren wir die Klasse ohne Namen über das Interface und implementieren die Funktion printMessage()
.
Um den Klassennamen zu erhalten, verwenden wir example.getClass()
, aber da es keinen Namen der Klasse gibt, erhalten wir eine Instanz vom Typ Class<?>
. Dann verwenden wir classNameInstace
, um getName()
aufzurufen, das den Namen der Klasse zurückgibt. Wie die Ausgabe zeigt, erhalten wir den Elternklassennamen GetClassName
mit angehängtem $1
, der die anonyme Klasse repräsentiert.
interface Example {
void printMessage();
}
public class GetClassName {
public static void main(String[] args) {
Example example = new Example() {
@Override
public void printMessage() {
System.out.println("This is an anonymous inner class");
}
};
Class<?> classNameInstance = example.getClass();
String className = classNameInstance.getName();
System.out.println(className);
}
}
Ausgabe:
GetClassName$1
Name der Klasse mit Thread.currentThread().getStackTrace()[1].getClassName()
abrufen
Im letzten Beispiel verwenden wir die Klasse Thread
, um den aktuell laufenden Thread mit currentThread()
abzurufen, der uns Zugriff auf den Stack-Dump und alle Aufrufe im Thread gibt. getStackTrace()
gibt ein Array von Stack-Elementen zurück, von dem wir das zweite Element des Arrays erhalten und getClassName()
aufrufen, um den Klassennamen des Aufrufs zu erhalten.
public class GetClassName {
public static void main(String[] args) {
String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();
System.out.println("Class name: " + simpleClassName);
}
}
Ausgabe:
Class name: GetClassName
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn