Gunakan mekanisme refleksi untuk menetapkan nilai medan: dapatkan rujukan medan melalui Field.getDeclaredField(). Panggil kaedah Field.set() untuk menetapkan nilai baharu objek sasaran.
Mekanisme refleksi Java: menetapkan nilai medan
Mekanisme refleksi ialah mekanisme untuk menyemak dan mengubah suai kelas, kaedah dan medan pada masa jalan. Ia membolehkan kami mengakses, menetapkan atau memanggil ahli peribadi atau dilindungi program Java.
Tetapkan nilai medan
Untuk menetapkan nilai medan, kita boleh menggunakan kaedahField.set()
. Kaedah ini menerima dua parameter: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()
age
. Kita boleh menetapkan nilaiage
menggunakan kod berikut: rrreeeNota:
setAccessible(true) kod> Kaedah untuk menyahpribadi medan. - Anda juga boleh menetapkan medan akses yang dilindungi atau pakej.
- Jika anda tidak mahu mengubah suai objek asal, anda juga boleh menggunakan kaedah
Field.set()
untuk membuat salinan nilai medan.
Atas ialah kandungan terperinci Bagaimanakah mekanisme refleksi Java menetapkan nilai medan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!