Obtenir le nom de la classe en Java

  1. Obtenir le nom de la classe à l’aide de class.getSimpleName() en Java
  2. Obtenir le nom de classe d’une classe anonyme à l’aide de getName()
  3. Obtenir le nom de la classe à l’aide de Thread.currentThread().getStackTrace()[1].getClassName()

Ce didacticiel explique comment obtenir le nom de la classe en Java à l’aide de quatre méthodes. Il existe de nombreux cas où nous souhaitons obtenir le nom de la classe en Java.

Obtenir le nom de la classe à l’aide de class.getSimpleName() en Java

C’est le moyen le plus utilisé pour obtenir le nom d’une classe. Dans l’exemple suivant, nous avons deux classes : GetClassName avec la méthode main(), et une autre classe est ExampleClass.

Dans la classe GetClassName, nous utilisons ExampleClass.class pour obtenir les informations de la classe. Il retourne une instance Class de type ExampleClass. Nous pouvons maintenant appeler getSimpleName() en utilisant la classNameInstance qui ne renverra que le nom de la classe sous forme de chaîne.

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

Production:

ExampleClass

Obtenir le nom de classe d’une classe anonyme à l’aide de getName()

Une classe interne sans nom est appelée classe anonyme. Dans cet exemple, nous allons apprendre comment obtenir un nom de classe s’il est anonyme ou vérifier si une classe a une classe anonyme. Ci-dessous, nous créons une interface Example pour instancier la classe anonyme. Dans GetClassName, nous instancions la classe sans nom à l’aide de l’interface et implémentons la fonction printMessage().

Afin d’obtenir le nom de la classe, nous utilisons example.getClass(), mais comme il n’y a pas de nom de la classe, nous obtenons une instance de type Class<?>. Ensuite, nous utilisons classNameInstace pour appeler getName() qui renvoie le nom de la classe. Comme le montre la sortie, nous obtenons le nom de classe parent GetClassName avec $1 ajouté, représentant la classe anonyme.

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

    }
}

Production:

GetClassName$1

Obtenir le nom de la classe à l’aide de Thread.currentThread().getStackTrace()[1].getClassName()

Dans le dernier exemple, nous utilisons la classe Thread pour obtenir le thread en cours d’exécution en utilisant currentThread() qui nous donne accès au vidage de la pile et à toutes les invocations dans le thread. getStackTrace() renvoie un tableau d’éléments de pile à partir duquel nous récupérons le deuxième élément du tableau et appelons getClassName() pour obtenir le nom de classe de l’invocation.

public class GetClassName {
    public static void main(String[] args) {

        String simpleClassName = Thread.currentThread().getStackTrace()[1].getClassName();

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

    }
}

Production:

Class name: GetClassName

Article connexe - Java Class

  • Variable statique privée en Java
  • Étendre deux classes en Java