全网整合营销服务商

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

免费咨询热线: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 


相关文章: 建站之星如何配置系统实现高效建站?  香港网站服务器数量如何影响SEO优化效果?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  seo网站制作优化,网站SEO优化步骤有哪些?  c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】  建站之星各版本价格是多少?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  建站之星官网登录失败?如何快速解决?  ,制作一个手机app网站要多少钱?  如何快速上传自定义模板至建站之星?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  高端企业智能建站程序:SEO优化与响应式模板定制开发  东莞专业制作网站的公司,东莞大学生网的网址是什么?  建站之星与建站宝盒如何选择最佳方案?  如何零基础开发自助建站系统?完整教程解析  网站制作话术技巧,网站推广做的好怎么话术?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何通过cPanel快速搭建网站?  宁波自助建站系统如何快速打造专业企业网站?  香港服务器租用每月最低只需15元?  常州自助建站工具推荐:低成本搭建与模板选择技巧  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何通过远程VPS快速搭建个人网站?  寿县云建站:智能SEO优化与多行业模板快速上线指南  如何在Windows 2008云服务器安全搭建网站?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  ,网页ppt怎么弄成自己的ppt?  建站之星如何通过成品分离优化网站效率?  如何基于云服务器快速搭建个人网站?  如何选择美橙互联多站合一建站方案?  如何快速搭建支持数据库操作的智能建站平台?  微信小程序 五星评分(包括半颗星评分)实例代码  如何在云指建站中生成FTP站点?  北京网站制作的公司有哪些,北京白云观官方网站?  建站三合一如何选?哪家性价比更高?  如何用搬瓦工VPS快速搭建个人网站?  内部网站制作流程,如何建立公司内部网站?  公司网站制作费用多少,为公司建立一个网站需要哪些费用?  ,sp开头的版面叫什么?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  Thinkphp 中 distinct 的用法解析  建站之星如何实现PC+手机+微信网站五合一建站?  Python路径拼接规范_跨平台处理说明【指导】  如何通过FTP空间快速搭建安全高效网站?  linux top下的 minerd 木马清除方法  武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?  网站制作大概多少钱一个,做一个平台网站大概多少钱? 

您的项目需求

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