Java Reflection_simple Exemple de modification des variables et des méthodes en privé
classe DemoteSest {private String name = "123"; public getName () {System.out.println ("public getName" + name); nom de retour; } private getName2 () {System.out.println ("private getName2" + name); nom de retour; }}Par exemple, modifiez la valeur du nom. Comment changer. Comment changer à travers la réflexion Java
Voyons d'abord comment utiliser la réflexion pour appeler la méthode getName
class <motest> calzz = demotest.class; constructeur Cons = Clazz.getConstructor (new class [] {}); // c'est le constructeur pour obtenir l'objet de classe. L'objet de la classe dont les paramètres sont construits. Par exemple: Demotest a une méthode de constructeur public Demotest (String Arg0, String arg1) {......}
À l'heure actuelle, Constructor Cons = Clazz.getConstructor (new class [] {String.class, String.class}); Les deux string.cals correspondent respectivement à Arg0 et Arg1 respectivement.
Ensuite, c'est:
Demotest test = (Demotest) Cons.NewInstance (nouvel objet [] {}); // générer l'objet correspondant. Le paramètre nouvel objet [] {} est la valeur spécifique du paramètre correspondant à la méthode de construction. Comme mentionné précédemment: Demotest test = (Demotest) Cons.NewInstance (nouvel objet [] {"Li Che", "Zhang San"}); Suivant:
Méthode méthode = cllazz.getMethod ("getName", new class [] {string.class}); méthode.invoke (test, nouvel objet [] {"wang wu"});À l'heure actuelle, vous pouvez imprimer le wu wu.
Ensuite, comment modifier la valeur du nom comme privé.
1. Obtenez le champ en premier,
Field Field = Clazz.getDeclaredField ("nom"); 2. Définissez l'indicateur accessible de cet objet sur la valeur booléenne indiquée. Une valeur de vrai indique que l'objet réfléchi doit annuler la vérification d'accès à la langue Java lorsqu'elle est utilisée. Une valeur de faux indique que l'objet réfléchi doit effectuer la vérification de l'accès au langage Java.
field.setAccessible (true);
3. Modifier la valeur variable
field.set ("name", "wang wu");D'ACCORD;
Il en va de même pour accéder aux méthodes privées.
Méthode méthode = Clazz.getDeclaredMethod ("getName2"); Method.SetAccessible (true); méthode.invoke (test, nouvel objet [] {"wang wu"});Utilisez GetDeclared Fields pour obtenir des champs privés et protégés au public
Si vous utilisez c.getFields (); Vous ne pouvez obtenir que des propriétés de type public
L'exemple Java Reflection_simple ci-dessus de la modification des variables et des méthodes en privé est tout le contenu que je partage avec vous. J'espère que vous pourrez vous faire référence et j'espère que vous pourrez soutenir Wulin.com plus.