Java のリフレクションを使用してプロパティ名と値を取得する方法
Java リフレクションを使用して、属性の名前と値を取得するには、次の手順を行います。
- クラスの Class オブジェクトを取得します。
- Class clazz = object.getClass();
- クラスのすべてのプロパティを取得する:
- Field[] fields = clazz.getDeclaredFields();
- 属性配列を走査し、属性名と値を取得する:
- fields 内の各フィールド field について {
// プロパティにアクセス可能に設定する。これを行わないと、プライベートなプロパティの取得はできない。
field.setAccessible(true);
String fieldName = field.getName();
Object fieldValue = field.get(object);
System.out.println(“プロパティ名:” + fieldName + “、プロパティ値:” + fieldValue);
}
完全なサンプルコードを以下に示します。
import java.lang.reflect.Field;
public class ReflectionExample {
public static void main(String[] args) {
// 创建对象
Person person = new Person("Tom", 18, "Male");
// 获取类的Class对象
Class clazz = person.getClass();
// 获取类的所有属性
Field[] fields = clazz.getDeclaredFields();
// 遍历属性数组,获取属性名和值
for (Field field : fields) {
// 设置属性可访问,否则私有属性无法获取
field.setAccessible(true);
String fieldName = field.getName();
Object fieldValue;
try {
fieldValue = field.get(person);
System.out.println("属性名:" + fieldName + ",属性值:" + fieldValue);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
class Person {
private String name;
private int age;
private String gender;
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
}
このコードサンプルを実行すると、Person オブジェクトのすべてのプロパティ名と値を取得できます。