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();
"$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.
Skúste použiť tento
this.getClass().getCanonicalName()
alebo this.getClass().getSimpleName()
. Ak je to anonymná trieda, použite this.getClass().getSuperclass().getName()