Javaでオブジェクトのプロパティ名と値を反復処理する方法

Java では、リフレクションを利用して、オブジェクトのプロパティの名前と値を列挙できます。 サンプルコードは以下の通りです。

import java.lang.reflect.Field;

public class ObjectTraversal {
    public static void main(String[] args) {
        // 创建一个示例对象
        Person person = new Person("John", 25, "Male");
        
        // 获取对象的Class对象
        Class<?> clazz = person.getClass();
        
        // 遍历对象的属性
        for (Field field : clazz.getDeclaredFields()) {
            // 设置私有属性可访问
            field.setAccessible(true);
            
            try {
                // 输出属性名称和值
                System.out.println(field.getName() + ": " + field.get(person));
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
}

class Person {
    private String name;
    private int age;
    private String gender;
    
    public Person(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }
}

このコードでは、Personクラスのインスタンスpersonを作成し、リフレクションメカニズムを使用してそのオブジェクトのClassオブジェクトclazzを取得しました。次に、clazz.getDeclaredFields()メソッドを使用してそのオブジェクトのすべての属性を取得し、反復処理します。反復処理中、field.setAccessible(true)を使用してプライベート属性をアクセス可能な状態に設定し、field.get(person)を使用して属性の値を取得し、System.out.println()を使用して属性名と値を出力します。

プログラムを実行すると、次の出力が得られます。

name: John
age: 25
gender: Male

リフレクションを使用してオブジェクトのプロパティを走査するときは、プロパティのアクセス権限がアクセシブルに設定されている必要があります。そうでないと、IllegalAccessException例外がスローされます。これは、field.setAccessible(true)を呼び出すことで実現できます。

bannerAds