我需要遍历抽象基类的子类中的公共属性。我以前对这类事情使用过反射,但是现在我还需要检索超类中的字段。下面的方法只返回子类中的那些字段,而不返回超类。如何访问基类的成员呢?
private <T> void inspectClass(Class<T> cls){
Field[] fields = cls.getDeclaredFields();
Log.d("FIELDS ARRAY", cls.toString());
for(Field f : fields){
Log.d("FIELD NAME", f.toString());
}
}
谢谢!
getFields方法将返回该类及其超类的所有公共字段。
如果你想要这个类及其超类的所有字段,只需使用getSuperClass()并调用相同的方法。
正如@Sotirios的评论所建议的,你可以一直这样做,直到层次结构。
Class<?> clazz = cls.getSuperclass();
while (clazz != null) {
// Print fields.
clazz = clazz.getSuperclass();
}
如果您想获得类的所有公共字段,您应该使用getFields
。java文档说:
Returns an array containing Field objects reflecting all the accessible public
fields of the class or interface represented by this Class object.
查看java.lang.Class
的文档