Het enige wat ik probeer te doen is de huidige klasse naam op te vragen, en java voegt een nutteloze onzin $1 toe aan het einde van mijn klasse naam. Hoe kan ik dit verwijderen en alleen de echte naam van de klasse teruggeven?
String className = this.getClass().getName();
De "$1" is geen "nutteloze onzin". Als je klasse anoniem is, wordt er een nummer aan toegevoegd.
Als je niet de class zelf wilt, maar de declaring class, dan kun je getEnclosingClass()
gebruiken. Bijvoorbeeld:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
Je kunt dat verplaatsen naar een statische utility methode.
Maar merk op dat dit niet de huidige klasse naam is. De anonieme klasse is een andere klasse dan de omringende klasse. Het geval is gelijkaardig voor binnenklassen.
Probeer dit te gebruiken
this.getClass().getCanonicalName()
of this.getClass().getSimpleName()
. Als het een anonieme klasse is, gebruik dan this.getClass().getSuperclass().getName()
.