Tudo o que estou tentando fazer é obter o nome da classe atual, e java acrescenta um inútil sem sentido **$1*** ao final do nome da minha classe. Como eu posso me livrar dele e só devolver o nome da classe atual?
String className = this.getClass().getName();
O "$1" não é "não é "inútil sem sentido". Se a sua aula é anônima, um número é anexado.
Se você não'não quer a classe em si, mas sua classe declarante, então você pode utilizar getEnclosingEnclosingClass()
. Por exemplo:
Class<?> enclosingClass = getClass().getEnclosingClass();
if (enclosingClass != null) {
System.out.println(enclosingClass.getName());
} else {
System.out.println(getClass().getName());
}
Você pode mover isso em algum método de utilidade estática.
Mas note que este não é o nome da classe atual. A classe anônima é uma classe diferente da classe que a envolve. O caso é semelhante para as classes internas.
Tente usar isto
this.getClass().getCanonicalName()
ou this.getClass().getSimpleName()
. Se esta'é uma classe anônima, utilize this.getClass().getSuperclass().getName()
.