Obtenha o nome da classe em Java

  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()

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 uma matriz de elementos da pilha a partir da qual obtemos o segundo item da matriz 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

Artigo relacionado - Java Class

  • Importar classe personalizada em Java
  • Classe estática em Java