📢 公告
微信公众号二维码

欢迎大家关注我的公众号

Skip to content

今天遇到一个问题,需要通过反射获取一个实体类中的所有字段,包括继承自其父类的字段。

最终笔者通过如下方法实现了此功能:

java
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()返回类或接口中的所有字段,无论字段的访问权限如何。