java通过反射由子类对象获取子类及父类的所有属性
时间: 2023-12-02 08:17:36 浏览: 197
java基于反射得到对象属性值的方法
5星 · 资源好评率100%
通过Java反射机制,可以通过子类对象获取子类及父类的所有属性。可以使用 `Class.getDeclaredFields()` 方法来获取一个类的所有属性,包括私有属性。同时,需要使用 `Class.getSuperclass()` 方法来获取父类的Class对象,然后再获取父类的属性。下面是一个示例代码:
```java
import java.lang.reflect.Field;
public class Parent {
private int parentField;
// 省略getter和setter方法
}
public class Child extends Parent {
private int childField;
// 省略getter和setter方法
}
public class Main {
public static void main(String[] args) throws Exception {
Child child = new Child();
child.setParentField(1);
child.setChildField(2);
// 获取子类的属性
Field[] childFields = child.getClass().getDeclaredFields();
for (Field field : childFields) {
field.setAccessible(true);
System.out.println("Child field: " + field.getName() + " = " + field.get(child));
}
// 获取父类的属性
Field[] parentFields = child.getClass().getSuperclass().getDeclaredFields();
for (Field field : parentFields) {
field.setAccessible(true);
System.out.println("Parent field: " + field.getName() + " = " + field.get(child));
}
}
}
```
在上述代码中,我们首先创建了一个Child对象,然后通过反射机制获取了子类的所有属性和父类的所有属性。注意,我们需要使用 `Field.setAccessible(true)` 方法来设置属性可访问,否则私有属性无法访问。运行上述代码,即可看到子类及父类的所有属性值。
阅读全文