Javaのリフレクションを使って、オブジェクトの属性値を取得する方法は何ですか?
Javaでは、リフレクション機構を使用してオブジェクトの属性値を取得することができます。具体的な手順は以下の通りです:
- Classオブジェクトを取得する方法は、getClass()メソッドを使用して、オブジェクトのClassオブジェクトを取得します。
- オブジェクトのプロパティを取得する際には、getDeclaredField()メソッドまたはgetField()メソッドを使用します。前者はすべてのアクセス修飾子のプロパティを取得できますが、後者はpublic修飾子のプロパティのみ取得できます。
- プロパティのアクセス権を設定します:プロパティがプライベートな場合、setAccessible(true)メソッドを使用してアクセス可能に設定する必要があります。
- 属性の値を取得します:属性の値を取得するには、get()メソッドを使用してください。
以下はサンプルコードです。
public class Main {
public static void main(String[] args) throws Exception {
// 创建对象
Person person = new Person("John", 25);
// 获取对象的Class对象
Class<?> clazz = person.getClass();
// 获取属性名为name的属性
Field nameField = clazz.getDeclaredField("name");
// 设置属性的访问权限
nameField.setAccessible(true);
// 获取属性的值
String name = (String) nameField.get(person);
System.out.println("name: " + name);
// 获取属性名为age的属性
Field ageField = clazz.getDeclaredField("age");
// 设置属性的访问权限
ageField.setAccessible(true);
// 获取属性的值
int age = (int) ageField.get(person);
System.out.println("age: " + age);
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
結果は出力します。
name: John
age: 25