日常开发中偶尔遇到需要获取类的属性的情形,通常我们经常想到反射,但是却对使用什么方式获取完整属性比较头疼,下面总结一下这个需求的实现。
public class ReflectUtil {
private ReflectUtil() { }
/**
* 获取类的全部属性字段(含父类)
*/
public static List<Field> getSuperFields(Class<?> clzss) {
List<Field> fieldList = new ArrayList<>();
//取父类属性
while (clzss != null) {
fieldList.addAll(Arrays.asList(clzss.getDeclaredFields())); //添加当前类全部属性
// 父类
clzss = clzss.getSuperclass();
}
return fieldList;
}
/**
* 获取对象的全部属性字段
*/
public static List<Field> getModelFields(Object model) {
return getSuperFields(model.getClass());
}
}