1. Le processus d'appel de la réflexion
(1)Phase de préparation : chargez toutes les classes lors de la compilation et enregistrez les méta-informations de chaque classe dans l'objet de classe Class. Chaque classe correspond à un objet Class
. ( 2) Obtenez l'objet Class : appelez x.class/x.getClass()/Class.forName() pour obtenir l'objet Class clz de x (les couches inférieures de ces méthodes sont toutes des méthodes natives, écrites en bas de la JVM, impliquant Nous n'explorerons pas la couche inférieure de la JVM pour l'instant)
(3)Effectuer une opération de réflexion réelle : Obtenez l'objet Champ/Méthode/Constructeur via l'objet clz pour d'autres opérations
2. Obtenez la classe class
Si vous souhaitez utiliser la réflexion Pour obtenir des informations sur une classe, vous devez d'abord obtenir l'instance de classe Class correspondant à la classe. L'instance de classe Class représente la classe et l'interface de l'application Java en cours d'exécution. La classe Class n'a pas de méthode de construction publique. L'objet de classe Class se trouve dans un flux d'octets binaires (généralement un fichier .class, qui peut également être obtenu via le réseau ou un package zip. Lorsqu'il est chargé par la JVM, il est appelé definitionClass(). ) de la méthode du chargeur de classe à construire.
/** * Instances of the class {@code Class} represent classes and * interfaces in a running Java application. * {@code Class} has no public constructor. Instead {@code Class} * objects are constructed automatically by the Java Virtual Machine as classes * are loaded and by calls to the {@code defineClass} method in the class * loader. */ public final class Class<T> implements java.io.Serializable,GenericDeclaration,Type,AnnotatedElement { ...... }
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!