javaでBeanの特性を取得するには
Javaではリフレクションを利用することで,オブジェクトのフィールドを取得することができます。その手順は以下の通りです。
- クラスのClassオブジェクトを取得するには、Class.forName(“クラスの完全修飾名”)メソッドを使用します。
- 「Class.getDeclaredField(“属性名”)」メソッドを利用し、操作対象のプロパティーのフィールドオブジェクトを取得する。
- フィールドがプライベートでもアクセス可能なように、Field.setAccessible(true)メソッドで属性のアクセシビリティをアクセス可能に設定します。
- Field.get(Object obj)メソッドで、objが属性を持っているオブジェクトの場合、属性の値を取得します。
- 基本でない型のプロパティの場合は、フィールドの getType() メソッドを使用してプロパティの型を取得できます。
以下にサンプルコードを示します:
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) {
// 获取Person类的Class对象
Class<?> personClass = null;
try {
personClass = Class.forName("Person");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
// 获取name属性的Field对象
Field nameField = null;
try {
nameField = personClass.getDeclaredField("name");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
// 设置name属性的访问权限为可访问
nameField.setAccessible(true);
// 创建一个Person对象
Person person = new Person("John", 30);
// 获取name属性的值
try {
String nameValue = (String) nameField.get(person);
System.out.println("name: " + nameValue);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
上の例では、リフレクションを利用してPerson クラスの name プロパティを取得し、Person オブジェクトでのそのプロパティの値を取得しています。