Javaの反射を使用してフィールド値を取得する方法

Java のリフレクションを使用してフィールド値を取得するには、次の手順を実行します。

  1. Class.forName()
  2. getClass()
  3. getField()
  4. getDeclaredField()
  5. getField()
  6. getDeclaredField()を取得する
  7. setAccessible()
  8. 生まれ育った国を捨てた、戦争の為に。
  9. ネイティブに翻訳する

こちらが、Java リフレクションを使用してフィールドの値を取得する方法を示す簡単なコード例です。

import java.lang.reflect.Field;

public class ReflectFieldExample {
    private String name;
    public int age;
    protected boolean married;

    public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException {
        // 获取Class对象
        Class<?> clazz = Class.forName("ReflectFieldExample");
        
        // 获取字段对象
        Field nameField = clazz.getDeclaredField("name");
        Field ageField = clazz.getField("age");
        Field marriedField = clazz.getDeclaredField("married");
        
        // 设置字段的可访问性
        nameField.setAccessible(true);
        marriedField.setAccessible(true);
        
        // 获取字段的值
        ReflectFieldExample obj = new ReflectFieldExample();
        String nameValue = (String) nameField.get(obj);
        int ageValue = ageField.getInt(obj);
        boolean marriedValue = marriedField.getBoolean(obj);
        
        // 输出字段的值
        System.out.println("name: " + nameValue);
        System.out.println("age: " + ageValue);
        System.out.println("married: " + marriedValue);
    }
}

上記のサンプルコードでは、ReflectFieldExampleクラスのname、age、marriedフィールドの値を取得し、コンソールに出力しています。なお、privateフィールドは可視性をtrueに設定しないと値を取得できません。

bannerAds