Rumah >Java >javaTutorial >Bagaimana untuk mendapatkan nilai atribut dalam refleksi java

Bagaimana untuk mendapatkan nilai atribut dalam refleksi java

小老鼠
小老鼠asal
2024-01-03 15:05:391498semak imbas

Kaedah mendapatkan: 1. Buat objek sampel; 2. Dapatkan nilai medan melalui medan.get(orang), di mana orang ialah objek sampel, dan medan ialah objek Medan, mewakili medan 3. Melalui setAccessible (benar) Tetapkan medan kepada keadaan boleh diakses, malah medan peribadi boleh mendapatkan nilainya; 4. Lintas tatasusunan medan, dapatkan nama dan nilai yang sepadan bagi setiap medan, dan cetaknya.

Bagaimana untuk mendapatkan nilai atribut dalam refleksi java

Sistem pengendalian tutorial ini: sistem Windows 10, komputer Dell G3.

Di Java, anda boleh menggunakan mekanisme pantulan untuk mendapatkan nilai sifat objek. Dalam contoh sebelumnya, kami telah menunjukkan cara menggunakan refleksi untuk mendapatkan nilai sifat objek Berikut ialah bahagian kod utama:

import java.lang.reflect.Field;
public class ReflectExample {
    public static void main(String[] args) throws IllegalAccessException {
        // 创建一个示例对象
        Person person = new Person("John", 25, "123 Main St");
        // 获取Class对象
        Class<?> clazz = person.getClass();
        // 获取类的所有字段(包括私有字段)
        Field[] fields = clazz.getDeclaredFields();
        // 遍历字段数组
        for (Field field : fields) {
            // 设置字段为可访问,即使是私有字段也可以访问
            field.setAccessible(true);
            // 获取字段的名称
            String fieldName = field.getName();
            // 获取字段的值
            Object fieldValue = field.get(person);
            // 打印字段名和值
            System.out.println(fieldName + ": " + fieldValue);
        }
    }
}
// 示例类
class Person {
    private String name;
    private int age;
    private String address;
    public Person(String name, int age, String address) {
        this.name = name;
        this.age = age;
        this.address = address;
    }
}

Dalam contoh di atas, nilai medan diperoleh melalui field.get(person. ), di mana orang ialah objek Contoh, manakala medan ialah objek Medan, mewakili medan. Dengan menetapkan medan kepada keadaan boleh diakses melalui setAccessible(true), malah medan peribadi boleh mendapatkan nilainya.

Lintas tatasusunan medan, dapatkan nama dan nilai yang sepadan bagi setiap medan, dan cetaknya. Perlu diingatkan bahawa mendapatkan nilai medan persendirian melalui refleksi memerlukan perhatian terhadap keselamatan dan enkapsulasi.

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan nilai atribut dalam refleksi java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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