Javaリフレクションを使用してオブジェクトのフィールドの値を取得する方法
Javaの反射機能を利用してオブジェクトのプロパティ値を取得する手順:
- オブジェクトのクラスオブジェクトは、オブジェクトのgetClass()メソッドを通じて取得できます。
Class<?> clazz = object.getClass();
- クラスオブジェクトのgetField()、getDeclaredField()、getFields()、getDeclaredFields()などのメソッドを通じて、屬性フィールドオブジェクトを取得することができます。
Field field = clazz.getDeclaredField("fieldName");
- フィールドオブジェクトのaccsessible属性をtrueに設定して、プライベート変数にアクセスできるようにする。
field.setAccessible(true);
- Fieldオブジェクトのget()メソッドを使用してプロパティの値を取得する。
Object value = field.get(object);
以下で完全なサンプルコードを紹介します。
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
MyClass myObject = new MyClass();
myObject.setField("Hello World");
Class<?> clazz = myObject.getClass();
Field field = clazz.getDeclaredField("field");
field.setAccessible(true);
Object value = field.get(myObject);
System.out.println(value);
}
static class MyClass {
private String field;
public void setField(String field) {
this.field = field;
}
}
}
サンプルコードでは、リフレクションを使用して非公開のフィールドであるfieldの値を取得し、コンソールに出力しています。