Obtener el nombre de la clase en Java

Rupam Yadav 12 octubre 2023
  1. Obtener el nombre de la clase usando class.getSimpleName() en Java
  2. Obtener el nombre de clase de una clase anónima usando getName()
  3. Obtener el nombre de la clase usando Thread.currentThread().getStackTrace()[1].getClassName()
Obtener el nombre de la clase en Java

Este tutorial enseña cómo obtener el nombre de la clase en Java utilizando cuatro métodos. Hay muchos casos en los que es posible que deseemos obtener el nombre de la clase en Java.

Obtener el nombre de la clase usando class.getSimpleName() en Java

Esta es la forma más utilizada de obtener el nombre de una clase. En el siguiente ejemplo, tenemos dos clases: GetClassName con el método main(), y otra clase es ExampleClass.

En la clase GetClassName, usamos ExampleClass.class para obtener la información de la clase. Devuelve una instancia de Clase de tipo ExampleClass. Ahora podemos llamar a getSimpleName() usando la classNameInstance que devolverá solo el nombre de la clase como una cadena.

public class GetClassName {
  public static void main(String[] args) {
    Class<ExampleClass> classNameInstance = ExampleClass.class;
    String className = classNameInstance.getSimpleName();
    System.out.println(className);
  }
}

class ExampleClass {
  private void exampleFun() {
    System.out.println("Just a function in a class");
  }
}

Producción :

ExampleClass

Obtener el nombre de clase de una clase anónima usando getName()

Una clase interna sin ningún nombre se denomina clase anónima. En este ejemplo, aprenderemos cómo obtener un nombre de clase si es anónimo o comprobar si una clase tiene una clase anónima. A continuación, creamos una interfaz Example para instanciar la clase anónima. En GetClassName, instanciamos la clase sin un nombre usando la interfaz e implementamos la función printMessage().

Para obtener el nombre de la clase, usamos example.getClass(), pero como no hay nombre de la clase, obtenemos una instancia del tipo Class<?>. Luego usamos classNameInstace para llamar a getName() que devuelve el nombre de la clase. Como muestra el resultado, obtenemos el nombre de la clase principal GetClassName con $1 añadido, que representa la clase anónima.

interface Example {
  void printMessage();
}

public class GetClassName {
  public static void main(String[] args) {
    Example example = new Example() {
      @Override
      public void printMessage() {
        System.out.println("This is an anonymous inner class");
      }
    };

    Class<?> classNameInstance = example.getClass();

    String className = classNameInstance.getName();

    System.out.println(className);
  }
}

Producción :

GetClassName$1

Obtener el nombre de la clase usando Thread.currentThread().getStackTrace()[1].getClassName()

En el último ejemplo, usamos la clase Thread para obtener el subproceso en ejecución actual usando currentThread() que nos da acceso al volcado de pila y todas las invocaciones en el subproceso. getStackTrace() devuelve un array de elementos de la pila de la que obtenemos el segundo elemento del array y llamamos a getClassName() para obtener el nombre de clase de la invocación.

public class GetClassName {
  public static void main(String[] args) {
    String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();

    System.out.println("Class name: " + simpleClassName);
  }
}

Producción :

Class name: GetClassName
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artículo relacionado - Java Class