Alles, was ich zu tun versuche, ist, den aktuellen Klassennamen zu erhalten, und Java fügt einen nutzlosen Unsinn $1 an das Ende meines Klassennamens an. Wie kann ich es loswerden und nur den tatsächlichen Klassennamen zurückgeben?
String className = this.getClass().getName();
Das "$1" ist kein "nutzloser Unsinn". Wenn Ihre Klasse anonym ist, wird eine Zahl angehängt.
Wenn Sie nicht die Klasse selbst, sondern ihre deklarierende Klasse haben wollen, können Sie getEnclosingClass()
verwenden. Zum Beispiel:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
Das kann man in eine statische Utility-Methode verschieben.
Beachten Sie aber, dass dies nicht der aktuelle Klassenname ist. Die anonyme Klasse ist eine andere Klasse als die sie einschließende Klasse. Bei inneren Klassen ist der Fall ähnlich.
Versuchen Sie dies zu verwenden
this.getClass().getCanonicalName()
oder this.getClass().getSimpleName()
. Wenn es eine anonyme Klasse ist, verwenden Sie this.getClass().getSuperclass().getName()