Java - dobite ime trenutnega razreda?

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();
Rešitev

"$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.

Komentarji (1)

Poskusite uporabiti to this.getClass().getCanonicalName() ali this.getClass().getSimpleName(). Če gre za anonimni razred, uporabite this.getClass().getSuperclass().getName()

Komentarji (7)

V vašem primeru se this verjetno nanaša na anonimni primerek razreda. Java daje tem razredom ime tako, da imenu obkrožajočega razreda doda $številko.

Komentarji (1)