HOWTO · Java
Obtenir la classe d’exécution d’un objet en Java
Découvrez comment Java permet d’obtenir la classe d’exécution d’un objet avec getClass(), et comment procéder avec des objets wrapper.
Sur cette page
Java ne possède pas d’opérateur typeof. Pour examiner la classe d’exécution d’un objet, appelez getClass() sur une référence d’objet non nulle. Les valeurs primitives, comme int et char, ne sont pas des objets et ne peuvent pas appeler directement cette méthode ; il faut d’abord les convertir en objets wrapper pour utiliser cette approche. Java propose aussi d’autres façons de travailler avec les informations de type : getClass() est utile lorsque vous avez besoin de connaître la classe réelle d’un objet existant.
Les questions sur les types et les opérateurs sont regroupées dans le Tutoriel Java, y compris la façon dont Java répond à la question typeof.
Obtenir la classe d’exécution d’un objet en Java
La méthode getClass(), définie par Object, renvoie un objet Class qui décrit la classe d’exécution du récepteur. Une référence de type String, par exemple, peut appeler cette méthode directement. L’affichage de l’objet Class inclut le nom du package, comme dans class java.lang.String.
Ce programme Java complet affiche une chaîne, puis la classe de l’objet qu’elle référence :
class RuntimeClassExample {
public static void main(String[] args) {
String message = "Hello";
System.out.println(message);
System.out.println("Class: " + message.getClass());
}
}
La sortie standard attendue est :
Hello
Class: class java.lang.String
Si vous partez d’une primitive, affectez-la à un objet wrapper, comme Integer ou Character, avant d’appeler getClass(). L’empaquetage (boxing) convertit une valeur primitive en l’objet wrapper correspondant. Au moment de l’appel, la référence doit désigner un objet : une référence null ne possède aucun récepteur sur lequel appeler la méthode.
Obtenir la classe d’exécution des objets wrapper en Java
Les classes wrapper permettent d’examiner des objets qui représentent des valeurs primitives. L’exemple suivant utilise Integer et Character. getClass() identifie la classe d’exécution de chaque objet, tandis que getSimpleName() renvoie son nom sans le package.
class WrapperClassExample {
public static void main(String[] args) {
Integer count = 20;
Character letter = 'G';
System.out.println("Integer class: " + count.getClass());
System.out.println("Character class: " + letter.getClass());
System.out.println("Integer simple name: " + count.getClass().getSimpleName());
System.out.println("Character simple name: " + letter.getClass().getSimpleName());
}
}
Ces appels indiquent les noms de classe java.lang.Integer et java.lang.Character ; leurs noms simples sont Integer et Character.