Java - ¿obtener el nombre de la clase actual?

Todo lo que estoy tratando de hacer es obtener el nombre de la clase actual, y java añade un inútil sin sentido $1 al final del nombre de mi clase. ¿Cómo puedo deshacerme de él y devolver sólo el nombre real de la clase?

String className = this.getClass().getName();
Solución

El "$1" no es "inútil sin sentido". Si su clase es anónima, se añade un número.

Si no quieres la clase en sí, sino su clase declarante, entonces puedes usar getEnclosingClass(). Por ejemplo:

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

Usted puede mover que en algún método de utilidad estática.

Pero tenga en cuenta que este no es el nombre de la clase actual. La clase anónima es una clase diferente a la que la encierra. El caso es similar para las clases internas.

Comentarios (1)

Prueba a usar esto this.getClass().getCanonicalName() o this.getClass().getSimpleName(). Si se trata de una clase anónima, utilice this.getClass().getSuperclass().getName().

Comentarios (7)

En su ejemplo, "esto" probablemente se refiere a una instancia de clase anónima. Java da un nombre a esas clases añadiendo un $número al nombre de la clase que las encierra.

Comentarios (1)