-
getFields返回一个Field类型数组,其中包含当前类的public字段,如果此类继承于某个父类,同时包括父类的public字段。其它的proteced和private字段,无论是属于当前类还是父类都不被此方法获取。
-
getDeclareFields返回一个Field类型数组,结果包含当前类的所有字段,private、protected、public或者无修饰符都在内。另外,此方法返回的结果不包括父类的任何字段。 此方法只是针对当前类的。
/**
* 获取本类及其父类的字段属性
* @param clazz 当前类对象
* @return 字段数组
*/
public static Field[] getAllFields(Class<?> clazz) {
List<Field> fieldList = new ArrayList<>();
while (clazz != null){
fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
clazz = clazz.getSuperclass();
}
Field[] fields = new Field[fieldList.size()];
return fieldList.toArray(fields);
}
public static void main(String[] args) {
//final Field[] fieldList = getAllFields(Subject.class);
//for (Field field : fieldList) {
// System.out.println(field);
//}
final List<String> list = getFieldsComment(Subject.class);
System.out.println(list);
}