Pregunta

  

Duplicar posible:
   Obtener el nombre de clase de un método estático en Java

Cuando estás dentro de un método estático, hay una manera de obtener el nombre de la clase (una cadena que contiene el nombre) sin tener que escribir el nombre de la clase en sí?

Por ejemplo, escribir MyClass.class.getName() no es más útil que acaba de "Myclass".

¿Fue útil?

Solución

Puede hacerlo mediante la creación (no tirar) una nueva excepción y la inspección de su seguimiento de la pila. Su clase será el elemento cero, ya que es el origen de la excepción. Se siente un poco mal, pero funcionará.

System.out.println( new Exception().getStackTrace()[0].getClassName() );

Puede hacer lo mismo con la clase Thread. Esto parece más limpio para mí, pero la línea es un poco más largo. Su clase es ahora el primer elemento de la StackTrace en lugar del cero. Thread.getStackTrace () es el cero.

System.out.println( Thread.currentThread().getStackTrace()[1].getClassName() );
  

Por ejemplo, escribir MyClass.class.getName () no es más útil que sólo "Myclass".

Por el contrario, si cambia el nombre MiClase usando la función de perfeccionar por su IDE que reemplazará MyClass.class.getName () con RenamedClass.class.getName (). Si pones una cadena en la que hay que tendrá que hacerlo manualmente.

Otros consejos

Puede utilizar una clase interna anónima:

class Test {
  public static void main(String[] args) {
    String className = new Object(){}.getClass().getEnclosingClass().getName();
    System.out.println(className);
  }
}

Si es sólo una cuestión de salvar algo de tecleo, entonces no pensar en ello. Usando MyClass.class permite que todas las herramientas de refactorización para reconocer y trabajar correctamente con su código.

Cuando se elige a programar en Java, que se escriba mucho. Utilizar un IDE que le ayudará para que no tenga que escribir absolutamente tanto:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top