Le mécanisme de réflexion est à l'état d'exécution. Il offre à Java la possibilité de "faire fonctionner des objets". Dans l'état d'exécution, via l'objet fichier Class, vous pouvez appeler les attributs, les méthodes, etc. dans n'importe quelle classe. En plus des méthodes de construction, y compris privées, toutes les classes sont transparentes devant le mécanisme de réflexion
Mon propre résumé : tout dans cette classe peut être vu via l'objet Class file, et peut être utilisé et modifié
La prémisse de la réflexion est d'obtenir l'objet fichier Classe ((objet bytecode)), alors il y a trois façons d'obtenir it :
#🎜 🎜## 🎜🎜#
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
L'objet bytecode est généré lorsque la classe est chargée et il n'y en a qu'un# 🎜🎜#Conclusion :
Peu importe la façon dont vous obtenez l'objet bytecode, c'est le même objet bytecode
Par réflexion Pour obtenir les attributs de la classe :
Partie de la méthode Class :
#🎜 🎜#1. Une classe Person avec deux attributs publics et deux privés (sans définir la construction et get/set, il suffit de voir si la réflexion peut obtenir la valeur à l'intérieur)1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Sortie :
Nous avons obtenu avec succès tous les attributs publics de la classe Personne
2 Vous. peut également obtenir tous les attributs, y compris les privés : (Les autres codes ne seront pas réécrits) , récupérez les attributs publics et modifiez la valeur :
1 2 3 |
|
Output:
4. Modifier cette valeur : Reliez ici les valeurs des attributs publics modifiés ci-dessus :1 2 3 4 5 6 7 8 9 10 11 |
|
Classe personne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
Classe de test :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
Sortie : # 🎜🎜 #
-----Obtenez les méthodes publiques dans Person et la classe parent Object↓-----public void Test02.Person.eat(java.lang.String) # 🎜🎜#Nom de la méthode : manger
Nom de la méthode : manger
public final void java.lang.Object.wait() lance java.lang. InterruptedExceptionNom de la méthode : wait
public final void java.lang.Object.wait(long,int) lance java.lang.InterruptedExceptionNom de la méthode : waitpublic final native void java .lang.Object.wait(long) lance java.lang.InterruptedException
public boolean java.lang.Object.equals(java.lang.Object)
Nom de la méthode : égal àpublic java.lang.String java.lang.Object.toString()
Nom de la méthode : toStringpublic native int java.lang.Object.hashCode()
Method nom :hashCodepublic final native java.lang.Class java.lang.Object.getClass()
Nom de la méthode : getClasspublic final native void java.lang.Object.notify()# 🎜 🎜#Nom de la méthode : notifypublic final native void java.lang.Object.notifyAll()
Nom de la méthode : notifyAll
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!