编程知识 cdmana.com

Java Reflection (2): quelques opérations de base de reflection

Pour l'un ou l'autreCatégorieclassExemple,Nous réfléchissons(ObtenirClassExemple de classe)Pour obtenir toutes ses informations.

Obtenir des informations sur le champ(FieldCatégorie)

ClassCatégorieVoici quelques exemples de méthodes pour obtenirFieldCatégorie

  • Field getField(String name):Obtenir unpublicDefield(Inclure les parents)
  • Field getDeclaredField(String name):Obtient l'une des classes actuelles en fonction du nom du champfield(Exclure les parents)
  • Field[] getFields():Obtenez toutpublicDefield(Inclure les parents)
  • Field[] getDeclaredFields():Obtenez tous lesfield(Exclure les parents)

Note::Peut être utilisévoid setAccessible(boolean flag)Pour déterminer si vous pouvez accéder à un nonpublicChamp.SiJVMLa période d'exécution existeSecurityManager,Alors il vérifiera selon les règles,Il est possible d'arrêtersetAccessible(true).

UnFieldExemple de classeContient toutes les informations d'un champ:

  • String getName():Renvoie le nom du champ
  • Class<?> getType():Renvoie les informations du type de champ(ClassExemple de classe,Par exemple:String.class
  • int getModifiers(): Renvoie les informations du modificateur pour le champ ,ModifierCatégorieMéthode statiqueisXXX(Par exemple:Modifier.isPublic(int))Selonint Valeur de retour à effectuer Opérations de bits Pour déterminer s'il y a un modificateur

Accès/Définir la valeur du champ(getter/setter)

Il n'est pas seulement possible d'obtenir Catégorieclass Un des champs FieldExemple de classe,Il peut également être utiliséObject get(Object obj)Méthode d'acquisitionCatégorieclassExemple La valeur spécifique du champ et void set(Object obj, Object value) La méthode définit la valeur du champ .

Note::ParamètresobjPourCatégorieclassExemple, Dans le cas d'un champ statique , Il suffit de mettre l'argument objComme suit:null

Obtenir des informations sur la méthode

Nous ne pouvons pas seulement passer parClassExemple de classeAccèsFieldExemple de classe Informations sur le champ ,La même chose.,Vous pouvez également obtenirMethodCatégorie Pour obtenir des informations sur la méthode .

ClassCatégorie Les exemples suivants sont fournis pour obtenir MethodCatégorie

  • Method getMethod(name, Class...):Obtenir unpublicDeMethod(Inclure les parents)
  • Method getDeclaredMethod(name, Class...):Obtenir une des classes actuellesMethod(Exclure les parents)
  • Method[] getMethods():Obtenez toutpublicDeMethod(Inclure les parents)
  • Method[] getDeclaredMethods():Obtenez tous lesMethod(Exclure les parents)

Note:: Contient également void setAccessible(boolean flag)Méthodes

UnMethodExemple Contient toutes les informations d'une méthode :

  • String getName(): Renvoie le nom de la méthode
  • Class<?> getReturnType(): Méthode de retour type de valeur de retour
  • Class<?>[] getParameterTypes(): Renvoie le type de paramètre de la méthode
  • int getModifiers():Renvoie le modificateur de la méthode(Même chose.FieldCatégorie

Méthode d'appel

Quand on en aura un MethodExemple de classeHeure,Peut passerObject invoke(Object obj, Object... args)Appelez.

Note::C'est exact.MethodAppel d'instanceinvoke C'est comme appeler la méthode ,invoke Le premier paramètre de est l'Instance objet , C'est - à - dire dans quel cas la méthode est appelée , Les paramètres variables suivants doivent être conformes aux paramètres de la méthode . Dans le cas d'une méthode statique ,Il suffit de mettreobjComme suit:null

Lorsqu'une méthode est appelée avec réflexion , Toujours selon le principe du polymorphisme : C'est - à - dire que la méthode de dépassement du type réel est toujours appelée (Si elle existe).

版权声明
本文为[Eesujie]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/11/20211125173332763d.html

Scroll to Top