Obtenir le nom de la classe en Java
-
Obtenir le nom de la classe à l’aide de
class.getSimpleName()
en Java -
Obtenir le nom de classe d’une classe anonyme à l’aide de
getName()
-
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
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