今天遇到一个问题,需要通过反射获取一个实体类中的所有字段,包括继承自其父类的字段。
最终笔者汪小成通过如下方法实现了此功能:
public static List<Field> getAllFields(Class<?> clazz) {
List<Field> fieldList = Lists.newArrayList();
while (clazz != null){
fieldList.addAll(Arrays.asList(clazz.getDeclaredFields()));
clazz = clazz.getSuperclass();
}
return fieldList;
}
在Java中, Class
类提供了getDeclaredFields()
和 getFields()
两个方法用于获取类的字段信息。这两个方法的区别在于getFields()
只返回类或接口中的公共字段,而getDeclaredFields()
返回类或接口中的所有字段,无论字段的访问权限如何。