Java - získať aktuálny názov triedy?

Snažím sa len získať aktuálny názov triedy a java mi na koniec názvu triedy pridá zbytočný nezmysel $1. Ako sa ho môžem zbaviť a vrátiť len aktuálny názov triedy?

String className = this.getClass().getName();
Riešenie

"$1" nie je "zbytočný nezmysel". Ak je vaša trieda anonymná, pridá sa číslo.

Ak nechcete'samotnú triedu, ale jej deklarujúcu triedu, potom môžete použiť getEnclosingClass(). Napríklad:

Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
  System.out.println(enclosingClass.getName());
} else {
  System.out.println(getClass().getName());
}

Môžete to presunúť do nejakej statickej obslužnej metódy.

Všimnite si však, že to nie je aktuálny názov triedy. Anonymná trieda je iná trieda ako jej obklopujúca trieda. Podobný prípad je aj pri vnútorných triedach.

Komentáre (1)

Skúste použiť tento this.getClass().getCanonicalName() alebo this.getClass().getSimpleName(). Ak je to anonymná trieda, použite this.getClass().getSuperclass().getName()

Komentáre (7)

Vo vašom príklade this pravdepodobne odkazuje na anonymnú inštanciu triedy. Java dáva týmto triedam meno tak, že k názvu obklopujúcej triedy pridá $číslo.

Komentáre (1)