关于Class类中Field[] getDeclaredFields(),JDK中解释如下:
返回 Field
对象的一个数组,这些对象反映此Class
对象所表示的类或接口所声明的所有字段。
如果存在多重继承的情况,若要获取包括父类中声明的所有字段,可借助Class类中Class<T> getSuperClass()方法,并结合递归,以获取所有的字段集合。
@SuppressWarnings("unchecked")
public static <T> Field[] getAllDeclaredFields(Class<T> clazz) {
List<Field[]> fieldArrayList = new ArrayList<Field[]>();
while (clazz != null) {
fieldArrayList.add(clazz.getDeclaredFields());
clazz = (Class<T>) clazz.getSuperclass();
}
int fieldCount = 0;
int fieldIndex = 0;
for (Field[] fieldArray : fieldArrayList) {
fieldCount = fiel