反射获取本类和父类所有属性
反射获取本类和父类所有属性
-
getFields():获得某个类的所有的公共(public)的字段,包括父类中的字段。
-
getDeclaredFields():获得某个类的所有声明的字段,即包括public、private和proteced,但是不包括父类的申明字段。
-
同样类似的还有getConstructors()和getDeclaredConstructors()、getMethods()和getDeclaredMethods(),这两者分别表示获取某个类的方法、构造函数。
那么问题来了,我要获取到当前类以及父类的所有属性,怎么办?
/**
* 获取本类及其父类的属性的方法
* @param clazz 当前类对象
* @return 字段数组
*/
private 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) {
Student student = new Student();
student.setStuClass("18001");
student.setStuNum("19800101");
student.setName("Tom");
student.setAge("20");
Class<? extends Student> clazz = student.getClass();
Field[] fields = getAllFields(clazz);
for (Field field : fields) {
System.out.println(field.getName());
}
}
本文作者:二白
本文链接:https://www.cnblogs.com/baijinqiang/p/12010493.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步