Rumah> Java> javaTutorial> teks badan

Bagaimanakah mekanisme refleksi Java menetapkan nilai medan?

PHPz
Lepaskan: 2024-04-15 22:18:01
asal
1129 orang telah melayarinya

Gunakan mekanisme refleksi untuk menetapkan nilai medan: dapatkan rujukan medan melalui Field.getDeclaredField(). Panggil kaedah Field.set() untuk menetapkan nilai baharu objek sasaran.

Bagaimanakah mekanisme refleksi Java menetapkan nilai medan?

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(目标对象, 新值);
Salin selepas log masuk

代码示例:

假设我们有一个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; } }
Salin selepas log masuk

注意:

  • 要访问私有字段,我们需要使用setAccessible(true)方法解除字段的私有性。
  • 同样可以设置受保护或包访问权限的字段。
  • 如果希望不修改原始对象,还可以使用Field.set()
    • Objek sasaran
    • Nilai baharu untuk ditetapkan
    Sintaks: rrreeeContoh kod: Seandainya kita mempunyai a kelas, yang mempunyai medan peribadiage. Kita boleh menetapkan nilaiagemenggunakan kod berikut: rrreeeNota:
    • Untuk mengakses medan peribadi kita perlu menggunakansetAccessible(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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!