全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

java 利用反射机制,获取实体所有属性和方法,并对属性赋值

一个普通的实体Person:

private int id;
private String name;
private Date createdTime;
...
//其它字段
// get set方法
...............

现在需要把通过webService传过来的实体Person里面的所有字段的null值,换成""

实现思路:

1.获取实体的所有字段,遍历
2.获取字段类型
3.调用字段的get方法,判断字段值是否为空
4.如果字段值为空,调用字段的set方法,为字段赋值

code:

   Field[] field = model.getClass().getDeclaredFields(); // 获取实体类的所有属性,返回Field数组
    try {
      for (int j = 0; j < field.length; j++) { // 遍历所有属性
        String name = field[j].getName(); // 获取属性的名字
        name = name.substring(0, 1).toUpperCase() + name.substring(1); // 将属性的首字符大写,方便构造get,set方法
        String type = field[j].getGenericType().toString(); // 获取属性的类型
        if (type.equals("class java.lang.String")) { // 如果type是类类型,则前面包含"class ",后面跟类名
          Method m = model.getClass().getMethod("get" + name);
          String value = (String) m.invoke(model); // 调用getter方法获取属性值
          if (value == null) {
            m = model.getClass().getMethod("set"+name,String.class);
            m.invoke(model, "");
          }
        }
        if (type.equals("class java.lang.Integer")) {
          Method m = model.getClass().getMethod("get" + name);
          Integer value = (Integer) m.invoke(model);
          if (value == null) {
            m = model.getClass().getMethod("set"+name,Integer.class);
            m.invoke(model, 0);
          }
        }
        if (type.equals("class java.lang.Boolean")) {
          Method m = model.getClass().getMethod("get" + name);
          Boolean value = (Boolean) m.invoke(model);
          if (value == null) {
            m = model.getClass().getMethod("set"+name,Boolean.class);
            m.invoke(model, false);
          }
        }
        if (type.equals("class java.util.Date")) {
          Method m = model.getClass().getMethod("get" + name);
          Date value = (Date) m.invoke(model);
          if (value == null) {
            m = model.getClass().getMethod("set"+name,Date.class);
            m.invoke(model, new Date());
          }
        }
         // 如果有需要,可以仿照上面继续进行扩充,再增加对其它类型的判断
      }
    } catch (NoSuchMethodException e) {
      e.printStackTrace();
    } catch (SecurityException e) {
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      e.printStackTrace();
    } catch (IllegalArgumentException e) {
      e.printStackTrace();
    } catch (InvocationTargetException e) {
      e.printStackTrace();
    }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # 反射机制  # 反射机制实例  # 反射机制获取数据  # java反射机制根据属性名获取属性值的操作  # Java通过反射机制动态设置对象属性值的方法  # java的基本数据类型及属性  # Java如何通过反射机制获取数据类对象的属性及方法  # 遍历  # 希望能  # 谢谢大家  # 一个普通  # 值为  # 为空  # 实体类  # InvocationTargetException  # br  # null  # code  # Field 


相关文章: 高防服务器:AI智能防御DDoS攻击与数据安全保障  如何通过建站之星自助学习解决操作问题?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  建站主机系统SEO优化与智能配置核心关键词操作指南  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何在建站之星绑定自定义域名?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  电商网站制作价格怎么算,网上拍卖流程以及规则?  如何用已有域名快速搭建网站?  如何选择高性价比服务器搭建个人网站?  如何在自有机房高效搭建专业网站?  如何通过wdcp面板快速创建网站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何通过西部数码建站助手快速创建专业网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何通过VPS建站无需域名直接访问?  ,石家庄四十八中学官网?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  如何通过VPS搭建网站快速盈利?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  建站之星如何一键生成手机站?  电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?  建站之星上传入口如何快速找到?  制作门户网站的参考文献在哪,小说网站怎么建立?  如何在IIS中配置站点IP、端口及主机头?  建站之星后台密码遗忘或太弱?如何重置与强化?  定制建站是什么?如何实现个性化需求?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何做网站制作流程,*游戏网站怎么搭建?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  建站与域名管理如何高效结合?  如何选择高效响应式自助建站源码系统?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  香港服务器如何优化才能显著提升网站加载速度?  如何在云服务器上快速搭建个人网站?  如何配置支付宝与微信支付功能?  如何用VPS主机快速搭建个人网站?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  网站制作的步骤包括,正确网址格式怎么写?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何快速搭建高效香港服务器网站?  学校建站服务器如何选型才能满足性能需求?  如何快速搭建高效服务器建站系统?  高性能网站服务器部署指南:稳定运行与安全配置优化方案  实例解析angularjs的filter过滤器  如何配置FTP站点权限与安全设置?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  怀化网站制作公司,怀化新生儿上户网上办理流程? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。