Maison  >  Article  >  Java  >  Comment le mécanisme de réflexion Java définit-il les valeurs des champs ?

Comment le mécanisme de réflexion Java définit-il les valeurs des champs ?

PHPz
PHPzoriginal
2024-04-15 22:18:011206parcourir

Utilisez le mécanisme de réflexion pour définir la valeur du champ : obtenez la référence du champ via Field.getDeclaredField(). Appelez la méthode Field.set() pour définir la nouvelle valeur de l'objet cible.

Comment le mécanisme de réflexion Java définit-il les valeurs des champs ?

Mécanisme de réflexion Java : définition des valeurs des champs

Le mécanisme de réflexion est un mécanisme permettant de vérifier et de modifier les classes, les méthodes et les champs au moment de l'exécution. Il nous permet d'accéder, de définir ou d'appeler des membres privés ou protégés d'un programme Java.

Définir la valeur du champ

Pour définir la valeur du champ, nous pouvons utiliser la méthode Field.set(). La méthode accepte deux paramètres : Field.set() 方法。该方法接受两个参数:

  • 目标对象
  • 要设置的新值

语法:

field.set(目标对象, 新值);

代码示例:

假设我们有一个 Person 类,它具有一个私有字段 age。我们可以使用以下代码设置 age 的值:

import java.lang.reflect.Field;

public class Main {
    public static void main(String[] args) throws Exception {
        // 实例化 Person 对象
        Person person = new Person();

        // 获取 Person 类的私有字段 age
        Field field = person.getClass().getDeclaredField("age");

        // 将 age 的值设置为 30
        field.set(person, 30);

        // 输出 age 的值
        System.out.println(person.getAge()); // 输出:30
    }
}

class Person {
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

注意:

  • 要访问私有字段,我们需要使用 setAccessible(true) 方法解除字段的私有性。
  • 同样可以设置受保护或包访问权限的字段。
  • 如果希望不修改原始对象,还可以使用 Field.set()
    • L'objet cible
    • La nouvelle valeur à définir
    🎜🎜🎜 Syntaxe : 🎜🎜rrreee🎜🎜Exemple de code : 🎜🎜🎜Supposons que nous ayons une Personne , qui possède un champ privé age. Nous pouvons définir la valeur de age en utilisant le code suivant : 🎜rrreee🎜🎜Remarque : 🎜🎜
    • Pour accéder aux champs privés, nous devons utiliser setAccessible(true) code> Méthode pour dépriver un champ. 🎜<li>Vous pouvez également définir des champs protégés ou d'accès au package. 🎜</li> <li>Si vous souhaitez ne pas modifier l'objet d'origine, vous pouvez également utiliser la méthode <code>Field.set() pour créer une copie de la valeur du champ. 🎜🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn