我在做大学项目。
我需要从类中获取所有字段。甚至私人和继承。我试图获取所有声明字段,然后投射到超类并重复。
我的代码片段:
private void listAllFields(Object obj) {
List fieldList = new ArrayList();
while (obj != null) {
fieldList.addAll(Arrays.asList(obj.getClass().getDeclaredFields()));
obj = obj.getClass().getSuperclass().cast(obj);
}
// rest of code
但它不工作。 tmpObj后的转换仍然是同一个类(不是超类)。
我将欣赏任何帮助如何解决铸造问题,或如何以不同的方式检索这些字段。
编辑:
问题不是获取字段,而是获取字段的名称!
我管理它的方式:
private void listAllFields(Object obj) {
List fieldList = new ArrayList();
Class tmpClass = obj.getClass();
while (tmpClass != null) {
fieldList.addAll(Arrays.asList(tmpClass .getDeclaredFields()));
tmpClass = tmpClass .getSuperclass();
}
// rest of code