1Pourquoi devrions-nous obtenir l'objet de classe ?
Lorsque nous voulons obtenir des informations et des méthodes de classe, nous utilisons le mécanisme de réflexion de Java pour nous permettre d'écrire du code de manière plus flexible. Nous pouvons assembler le code lorsque le programme est en cours d'exécution et nous pouvons également implémenter des agents dynamiques.
Le mécanisme de réflexion permet au programme d'obtenir les informations internes de toute classe portant un nom connu pendant l'exécution.
Il existe ensuite trois manières principales d'obtenir des objets de classe et des informations sur le contenu.
2 Utilisez la méthode getClass()
2.1 Créer une classe Personne
package com.clazz;
public class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2.2 Créer une classe de test
package com.clazz;
public class Test {
public static void main(String[] args) {
Person person = new Person();
Class clazz = person.getClass();
System.out.println(clazz.getName());
}
}
Le résultat de sortie est le nom complet du chemin du package et le nom de la classe :
com.clazz.Person
Ce qu'il faut noter est le suivant : lorsque plusieurs instances d'objet sont créées simultanément pour la même classe, il n'existe en réalité qu'une seule copie de l'objet de classe.
Person person1 = new Person();
Person person2 = new Person();
System.out.println(person1.getClass() == person2.getClass());
Le résultat de la course est vrai.
3 Utiliser les attributs statiques de classe
Cette méthode ne nécessite pas d'instanciation de la classe et l'objet de classe de la classe peut être obtenu directement en utilisant l'attribut statique de classe de la classe.
package com.clazz;
public class Test {
public static void main(String[] args) {
Class<Person> personClass = Person.class;
System.out.println(personClass.getName());
}
}
Le résultat de sortie est le nom complet du chemin du package et le nom de la classe :
com.clazz.Person
4 Utilisez la méthode statique forName() dans la classe Class
Pour obtenir l'objet de classe de cette manière, vous devez spécifier le chemin complet de la classe d'objet Class à obtenir dans la méthode forName(), c'est-à-dire le nom du package + le nom de la classe.
package com.clazz;
public class Test {
public static void main(String[] args) {
try {
Class<?> aClass = Class.forName("com.clazz.Person");
System.out.println(aClass.getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Le résultat de sortie est le nom complet du chemin du package et le nom de la classe :
com.clazz.Person
Il y a un problème qui mérite attention ici. Comme nous spécifions manuellement les informations de chemin complet de cette classe, il est possible que le package n'ait pas été introduit par nous, ou que le nom du package et les informations de chemin soient mal saisis en glissant manuellement, et un Une erreur peut être signalée, cette méthode nécessite donc de lancer une exception vers l'extérieur.