• 开发总结--续(上一个开发总结貌似字数限制)


    在java层,我还定义了一个可以获五个字段的类

    /**
    		 * 规则号
    		 */
    	    public String ruleNo;
    	    /**
    	     * 公司账套
    	     */
    	    @RuleDtlTypeInfo(value ="30")
    		private String businessBook;
    		/**
    		 * 公司账套名称
    		 */
    		private String businessBookDesc;
    	    /**
    	     * 机构级别
    	     */
    		@RuleDtlTypeInfo(value ="31")
    		private String branchLevel;
    		/**
    		 * 机构名称
    		 */
    	    private String branchLevelDesc;
    	    /**
    	     * 所在预算中心
    	     */
    		@RuleDtlTypeInfo(value ="32")
    		private String placeBudgetCenter;
    		/**
    		 * 所在预算中心名称
    		 */
    	    private String placeBudgetCenterDesc;
           ......等等

    可以发现我为每个写了注解

    /**功能描述:该注释是用来标识使用该注释的字段是属于规则明细设置表中哪种类型
    * @author fangjunjie.wb
    * @date 2020/4/22
    * @return
    */
    @Target( { ElementType.FIELD })
    @Retention(RetentionPolicy.RUNTIME)
    public @interface RuleDtlTypeInfo {
    
    	/**
    	 * 规则明细类型值
    	 * 
    	 * @return
    	 */
    	String value();
    
    }
    

    最后根据反射解析五个字段(貌似不知5个)核心代码如下,需要保存的字段我都添加了@RuleDtlTypeInfo

     @Override
        public List<RuleDetailSetDomain> analysisFilterMask(Object o,String ruleNo) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
            List<RuleDetailSetDomain> ruleDetailSetDomainList=new ArrayList<RuleDetailSetDomain>();
            Field[] field = o.getClass().getDeclaredFields();
    
            for (int i = 0; i < field.length; i++) {
                //获取注解的规则明细类型,如果字段没有添加RuleDtlTypeInfo注解,则不进行保存
                RuleDtlTypeInfo ruleDtlTypeInfo=  field[i].getAnnotation(RuleDtlTypeInfo.class);
                if (ruleDtlTypeInfo!=null){
                    RuleDetailSetDomain ruleDetailSetDomain=new RuleDetailSetDomain();
                    String ruleDtlNo = commonService.getSequence("BEPRULE", "RULE_DETAIL_SET", "RULE_DETAIL_NO");
                    ruleDetailSetDomain.setRuleNo(ruleNo);
                    ruleDetailSetDomain.setRuleDetailNo(ruleDtlNo);
                    ruleDetailSetDomain.setRuleDtlType(ruleDtlTypeInfo.value());
    
                    // 获取属性的名字
                    String name = field[i].getName();
                    // 将属性的首字母大写
                    Method m = o.getClass().getMethod("get" + StringUtil.UpperFirst(name));
                    // 调用getter方法获取属性值
                    String ruleDtlValue = (String) m.invoke(o);
                    ruleDetailSetDomain.setRuleDtlValue(ruleDtlValue);
    
                    ruleDetailSetDomainList.add(ruleDetailSetDomain);
                }
    
            }
            return ruleDetailSetDomainList;
        }
    

      

  • 相关阅读:
    codeforces_1075_C. The Tower is Going Home
    leetcode_Stone Game_dp_思维
    leetcode_Counting Bits_dp
    Divide and Conquer_1.最大连续子数组
    python_MachineLearning_感知机PLA
    IIS中启用gzip压缩(网站优化)
    asp.net运行机制图
    asp.net 的那点事(2、浏览器和一般处理程序)
    asp.net 的那点事(1、当用户在浏览器地址栏输入了网址后,发生了什么?)
    android环境搭配 运行android sdk manager时出现错误问题解决
  • 原文地址:https://www.cnblogs.com/imfjj/p/14084515.html
Copyright © 2020-2023  润新知