通过反射机制获取类集合的所有属性值

1.

    List<QueryApplicationForm> applyList = dataBaseService.findEntities(hql, regulars, values.toArray());
            List<Object> objectList=new ArrayList<Object>();
            //将状态转化为文字说明
            for(QueryApplicationForm d:applyList){
                if(null!=d.getUnitStatus()&&1==d.getUnitStatus()){
                    d.setUnitExplain("存在");
                }else{
                    d.setUnitExplain("不存在");
                }
                switch(d.getApplicationStatus()){
                case 1:d.setStatusExplain("已申请");
                    break;
                case 2:d.setStatusExplain("审核通过");
                    break;
                case 3:d.setStatusExplain("审核不通过");
                    break;
                case 4:d.setStatusExplain("查询中");
                    break;
                case 5:d.setStatusExplain("查询异常");
                    break;
                case 6:d.setStatusExplain("查询完成");
                    break;
                }
                objectList.add(d);
            }
            Class<QueryApplicationForm> c=QueryApplicationForm.class;
            Field fields[]=c.getDeclaredFields();
            String headers1[]={"序号","申请表编码","查询主题名称","申请人","被查企业名称","被查企业是否存在","查询申请时间","当前状态"};
            String columnIds[]={"number","applicationFormCode","modelName","applicantName","applicantUnitName","unitExplain","applicationTime","statusExplain"};
            String fileName = "查询申请详情";
            this.downloadDatagridDetail(objectList, headers1, columnIds, fileName,fields,1,request, response);

2.

《1》获得所需对象的类集合。

 objectList

《2》获得该对象所有的属性值集合

 Class<QueryApplicationForm> c=QueryApplicationForm.class;
            Field fields[]=c.getDeclaredFields();

《3》这是我自己写的调用方法,这个方法中将传过来的类集合进行获取其属性值,objectList,fields其余参数是个人业务参数,可忽略

this.downloadDatagridDetail(objectList, headers1, columnIds, fileName,fields,1,request, response);

3.这里贴出调用方法用到反射的相关代码:

public void downloadDatagridDetail(List<Object> lists,String headers1[],String columnIds[],String fileName,Field fields[],int mo,HttpServletRequest request,
            HttpServletResponse response){
        /**
         * 导出查找到的数据
         */
        List<Map> mapList=new ArrayList<Map>();
        int num=1;
        String message = "导出失败";
        for(Object obj:lists){
            Map map=new HashMap();
            map.put("number", num);
            /**
             * 通过遍历反射获得对象属性值
             */
            for(Field field:fields){
                field.setAccessible(true);
//                String fieldValue = null;
//                    fieldValue = (String)field.get(obj);
                try {
                    //mo是为了解决冲突多加的限制条件(一般可以忽略此条件)
                    if(field.getName().equals("model")&&mo==1){
                        QueryIntModel dto =(QueryIntModel)field.get(obj);
                        String modelName = dto.getModelName();
                        map.put("modelName", modelName);
                    }else if(field.getName().equals("modelName")){
                        //这里不再重复取值
                    }else{
                        map.put(field.getName(), field.get(obj));
                    }
                    
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            mapList.add(map);
            num++;
        }

这样mapList就获得了所有你需要的对象及其属性值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值