Javaの反射を使用してフィールド値を取得する方法
Java のリフレクションを使用してフィールド値を取得するには、次の手順を実行します。
- Class.forName()
- getClass()
- getField()
- getDeclaredField()
- getField()
- getDeclaredField()を取得する
- setAccessible()
- 生まれ育った国を捨てた、戦争の為に。
- ネイティブに翻訳する
こちらが、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に設定しないと値を取得できません。