Java - obter o nome da classe atual?

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();
Solução

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.

Comentários (1)

Tente usar isto this.getClass().getCanonicalName() ou this.getClass().getSimpleName(). Se esta'é uma classe anônima, utilize this.getClass().getSuperclass().getName().

Comentários (7)

No seu exemplo, "isto" provavelmente se refere a uma instância de classe anônima. Java dá um nome a essas classes anexando um $número ao nome da classe que a encerra.

Comentários (1)