Vse, kar poskušam storiti, je, da dobim trenutno ime razreda, java pa na konec imena mojega razreda doda neuporaben nesmisel $1. Kako se ga lahko znebim in vrnem samo dejansko ime razreda?
String className = this.getClass().getName();
"$1" ni "neuporaben nesmisel". Če je vaš razred anonimen, se doda številka.
Če ne želite samega razreda, temveč njegov deklarirajoči razred, lahko uporabite getEnclosingClass()
. Na primer:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
To lahko prenesete v kakšno statično uporabno metodo.
Vendar upoštevajte, da to ni trenutno ime razreda. Anonimni razred je drugačen razred kot njegov obkrožajoči razred. Podobno velja za notranje razrede.
Poskusite uporabiti to
this.getClass().getCanonicalName()
ali this.getClass().getSimpleName()
. Če gre za anonimni razred, uporabite this.getClass().getSuperclass().getName()