中国移动 JavaSE java 线程池 deployment gdb HammerJS 郑州网络 郑州网站开发 jq遍历元素 jq解析json mysql安装后怎么使用 安卓程序源代码 python循环 python类 python3删除文件 python操作mysql python等待10秒 python中的循环 python路径设置 python读取字典 java数组反转 java的继承 java初学者 java学习课程 java获取文件大小 java线程中断 java实现队列 java线程死锁 linux目录 php开发教程 p2pover xp画图工具 flash相册制作 linux解压tar js添加元素 groupy js字符串比较 谷歌浏览器访问助手 淘宝抽奖活动 linux解压
当前位置: 首页 > 学习教程  > 编程语言

java反射机制实践---对象属性预处理

2021/1/28 23:58:23 文章标签:

java反射机制实践—对象属性预处理 引言 最近碰到了个问题,数据从前端传入之后需要进行校验。于是乎就简单的用get,set方法,但这样就使代码看起来异常臃肿,不美观。未引入反射之前的代码 if(pa.getLitigationAmount().length()>15){pa.se…

java反射机制实践—对象属性预处理
引言
  最近碰到了个问题,数据从前端传入之后需要进行校验。于是乎就简单的用get,set方法,但这样就使代码看起来异常臃肿,不美观。
未引入反射之前的代码
   if(pa.getLitigationAmount().length()>15)
            {
                pa.setLitigationAmount(RoundNoOfUtil.RoundNoOf(pa.getLitigationAmount(),2));
            }
            if(pa.getCalculatedPaidInterest().length()>15)
            {
               pa.setCalculatedPaidInterest(RoundNoOfUtil.RoundNoOf(pa.getCalculatedPaidInterest(),2));
            }
            if(pa.getDeclaredFee().length()>15)
            {
                pa.setDeclaredFee(RoundNoOfUtil.RoundNoOf(pa.getDeclaredFee(),2));
            }
            if(pa.getExecuteFee().length()>15)
            {
                pa.setExecuteFee(RoundNoOfUtil.RoundNoOf(pa.getExecuteFee(),2));
            }
            if(pa.getExecuteAll().length()>15)
            {
                pa.setExecuteAll(RoundNoOfUtil.RoundNoOf(pa.getExecuteAll(),2));
            }
            if(pa.getExecuteAmount().length()>15)
            {
                pa.setExecuteAmount(RoundNoOfUtil.RoundNoOf(pa.getExecuteAmount(),2));
            }
            if(pa.getExecuteNum().length()>15)
            {
                pa.setExecuteNum(RoundNoOfUtil.RoundNoOf(pa.getExecuteNum(),2));
            }
            if(pa.getFee().length()>15)
            {
                pa.setFee(RoundNoOfUtil.RoundNoOf(pa.getFee(),2));
            }
            if(pa.getHalfLitigationFee().length()>15)
            {
                pa.setHalfLitigationFee(RoundNoOfUtil.RoundNoOf(pa.getFee(),2));
            }
            if(pa.getLawyerFee().length()>15)
            {
                pa.setLawyerFee(RoundNoOfUtil.RoundNoOf(pa.getLawyerFee(),2));
            }
            if(pa.getLitigationFee().length()>15)
            {
                pa.setLitigationFee(RoundNoOfUtil.RoundNoOf(pa.getLitigationFee(),2));
            }
            if(pa.getLitigationInterest().length()>15)
            {
                pa.setLitigationInterest(RoundNoOfUtil.RoundNoOf(pa.getLitigationInterest(),2));
            }
            if(pa.getLitigationPrincipal().length()>15)
            {
                pa.setLitigationPrincipal(RoundNoOfUtil.RoundNoOf(pa.getLitigationPrincipal(),2));
            }
            if(pa.getLoanNum().length()>15)
            {
                pa.setLoanNum(RoundNoOfUtil.RoundNoOf(pa.getLoanNum(),2));

            }
            if(pa.getRateMonth().length()>15)
            {
                pa.setRateMonth(RoundNoOfUtil.RoundNoOf(pa.getLoanNum(),2));

            }
            if(pa.getRateYear().length()>15)
            {
                pa.setRateYear(RoundNoOfUtil.RoundNoOf(pa.getRateYear(),2));
            }
            if(pa.getPaidInterest().length()>15)
            {
                pa.setPaidInterest(RoundNoOfUtil.RoundNoOf(pa.getPaidInterest(),2));
            }
            if(pa.getPaidPrincipal().length()>15)
            {
                pa.setPaidPrincipal(RoundNoOfUtil.RoundNoOf(pa.getPaidPrincipal(),2));

            }
            if(pa.getSecurityFee().length()>15)
            {
                pa.setSecurityFee(RoundNoOfUtil.RoundNoOf(pa.getSecurityFee(),2));

            }

一堆if判断,看起来傻乎乎的。由于都是对对象属性进行操作,因此想到了用反射来解决。

引入反射后的代码
            Class cls = pa.getClass();
            //获取所有属性列表
            Field[] fields = cls.getDeclaredFields();

            for (Field field:fields)
            {
                //开启私有化成员权限,private属性默认权限为false.从这可以看出private只是逻辑上的私有化,实际上通过反射机制依然可以获取到值。
                field.setAccessible(true);
                //获取数量类型 如 String Integer
                String type_name = field.getType().getSimpleName();

                if("String".equals(type_name))
                {

                  //开始对String类型的属性进行处理

                    String str = (String) field.get(pa);

                    // 初步校验
                    if(str!=null&&str.length()>15&&(str.contains("99999")|str.contains("00000")))
                    {
                        //操作
                        str = RoundNoOfUtil.RoundNoOf(str,2);
                    }
                    field.set(pa,str);

                }
                if("Date".equals(type_name))
                {
                    //同上
                    Date date = (Date)field.get(pa);
                    if(date==null)
                    {
                        field.set(pa,new Date(2000,4,20));

                    }

                }

            }

本文链接: http://www.dtmao.cc/news_show_650342.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?