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/f5In 著作权归作者所有。请勿转载和采集!