博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 反射之获取泛型对象的所有字段与对应的值(包括父类的)
阅读量:6423 次
发布时间:2019-06-23

本文共 2060 字,大约阅读时间需要 6 分钟。

上代码:

public static void main(String[] args) throws IntrospectionException {        SysUser obj = new SysUser();        obj.setId(1L);        obj.setUserName("测试");        obj.setCreatedDate(LocalDateTime.now());        Class
clazz = SysUser.class; Field[] tableFields = clazz.getDeclaredFields(); Class
superClazz = clazz.getSuperclass(); if (superClazz.equals(Object.class)) { System.out.println("没有父类"); } else { Field[] tableSuperFields = superClazz.getDeclaredFields(); Field[] superFields = new Field[tableFields.length + tableSuperFields.length]; System.arraycopy(tableFields, 0, superFields, 0, tableFields.length); System.arraycopy(tableSuperFields, 0, superFields, tableFields.length, tableSuperFields.length); Field[] allFields = getSuperClassFields(superFields, superClazz); for (int i = 0; i < allFields.length; i++) { PropertyDescriptor pd = new PropertyDescriptor(allFields[i].getName(), clazz); Method getMethod = pd.getReadMethod();//获得get方法 Object fieldValue = ReflectionUtils.invokeMethod(getMethod, obj); if(fieldValue == null){ continue; } System.out.println(allFields[i].getName() + "的值:" + fieldValue.toString()); } } } //获取父类的所有字段 private static Field[] getSuperClassFields(Field[] tableFields, Class
clazz) { Class
superClazz = clazz.getSuperclass(); if (superClazz.equals(Object.class)) { return tableFields; } Field[] tableSuperFields = superClazz.getDeclaredFields(); Field[] c = new Field[tableFields.length + tableSuperFields.length]; System.arraycopy(tableFields, 0, c, 0, tableFields.length); System.arraycopy(tableSuperFields, 0, c, tableFields.length, tableSuperFields.length); getSuperClassFields(c, superClazz); return c; }

输出结果:

 

转载于:https://www.cnblogs.com/JoeyWong/p/10406875.html

你可能感兴趣的文章
使用Installutil安装系统服务方法
查看>>
jQuery源码
查看>>
[Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
查看>>
c# 6.0新特性(二)
查看>>
[工具]json转类
查看>>
杭电 1231 最大连续子序列
查看>>
es7 --- 新特性
查看>>
[转载] 老友记——潘石屹 任志强《天台论道》(下)
查看>>
276. Paint Fence
查看>>
【SDOI2009】Bill的挑战
查看>>
Python的变量和常量
查看>>
python列表中的深浅copy
查看>>
webconfig 初认识
查看>>
Uva 11078 简单dp
查看>>
javaWeb 在jsp中 使用自定义标签输出访问者IP
查看>>
java 线程 障碍器
查看>>
Ajax与JSON的一些总结
查看>>
59.仿微信的图片浏览器
查看>>
201771010101 白玛次仁《面向对象程序设计(Java)》第十一周学习总结
查看>>
[PTA]数组循环右移
查看>>