Obtenha o nome da classe em Java

Rupam Yadav 12 outubro 2023
  1. Obtenha o nome da classe usando class.getSimpleName() em Java
  2. Obter o nome da classe de uma classe anônima usando getName()
  3. Obtenha o nome da classe usando Thread.currentThread().getStackTrace()[1].getClassName()
Obtenha o nome da classe em Java

Este tutorial ensina como obter o nome da classe em Java usando quatro métodos. Existem muitos casos em que podemos desejar obter o nome da classe em Java.

Obtenha o nome da classe usando class.getSimpleName() em Java

Esta é a forma mais utilizada de obter o nome de uma classe. No exemplo a seguir, temos duas classes: GetClassName com o método main() e outra classe é ExampleClass.

Na classe GetClassName, usamos ExampleClass.class para obter as informações da classe. Ele retorna uma instância de Class do tipo ExampleClass. Agora podemos chamar getSimpleName() usando classNameInstance que retornará apenas o nome da classe como uma String.

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");
  }
}

Produção:

ExampleClass

Obter o nome da classe de uma classe anônima usando getName()

Uma classe interna sem nenhum nome é chamada de classe Anônima. Neste exemplo, aprenderemos como obter o nome de uma classe se ela for anônima ou verificar se uma classe possui uma classe anônima. Abaixo, criamos uma interface Exemplo para instanciar a classe anônima. Em GetClassName, instanciamos a classe sem um nome usando a interface e implementamos a função printMessage().

Para obter o nome da classe, usamos example.getClass(), mas como não há nome da classe, obtemos uma instância do tipo Class<?>. Então usamos classNameInstace para chamar getName() que retorna o nome da classe. Como mostra a saída, obtemos o nome da classe pai GetClassName com $1 anexado, representando a classe 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);
  }
}

Produção:

GetClassName$1

Obtenha o nome da classe usando Thread.currentThread().getStackTrace()[1].getClassName()

No último exemplo, usamos a classe Thread para obter o thread em execução atual usando currentThread() que nos dá acesso ao despejo de pilha e todas as invocações no thread. getStackTrace() retorna um array de elementos da pilha a partir da qual obtemos o segundo item do array e chamamos getClassName() para obter o nome da classe da invocação.

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

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

Produção:

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

Artigo relacionado - Java Class