Java 反射: 获取对象属性及属性值
Java 反射可以通过以下步骤获取对象的属性及属性值:
-
获取该对象的 Class 对象,即 Class.forName('类名') 或者对象.getClass()。
-
通过 Class 对象的 getDeclaredFields() 方法获取该类所有的属性(包括私有属性),返回的是 Field 数组。
-
遍历 Field 数组,可以通过 Field 对象的 getName() 方法获取属性名,通过 getType() 方法获取属性类型。
-
通过 Field 对象的 setAccessible(true) 方法设置可访问私有属性(如果有私有属性)。
-
通过 Field 对象的 get(Object obj) 方法获取该属性的值,其中 obj 为该属性所属的对象。
下面是一个示例代码:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) throws Exception {
Person person = new Person('Tom', 20);
Class clazz = person.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
System.out.println(field.getName() + ' = ' + field.get(person));
}
}
}
// 输出结果:
// name = Tom
// age = 20
上面的代码中,首先通过 person 对象获取其 Class 对象,然后通过 Class 对象的 getDeclaredFields() 方法获取该类所有的属性,接着遍历 Field 数组,依次输出每个属性的名字和值。注意,由于 name 属性是私有的,需要通过 setAccessible(true) 方法设置可访问。
原文地址: https://www.cveoy.top/t/topic/otqG 著作权归作者所有。请勿转载和采集!