取本类和父类的所有成员变量

要取本类和基类的所有成员变量,Class类中提供的两种获取类中成员变量的方法都不能直接实现这个需求,但是可以通过简单的while循环来实现。

// 取所有字段(包括基类的字段)
Field[] allFields = clazz.getDeclaredFields();
Class superClass = clazz.getSuperclass();
while (superClass != null) {
  Field[] superFileds = superClass.getDeclaredFields();
  allFields = ArrayUtils.addAll(allFields, superFileds);
  superClass = superClass.getSuperclass();
}