美文网首页
判断类中属性是否为空并设置相应默认值

判断类中属性是否为空并设置相应默认值

作者: 半日孤独 | 来源:发表于2020-01-13 17:41 被阅读0次
    通过反射进行判断
     /**
         * null转为空字符串
         * @param bean
         * @param <T>
         */
        public static <T> void nullToEmpty(T bean) {
            Field[] field = bean.getClass().getDeclaredFields();
            //遍历所有属性
            for (int j = 0; j < field.length; j++) {
                //获取属性的名字
                String name = field[j].getName();
                //将属性的首字符大写,方便构造get,set方法
                name = name.substring(0, 1).toUpperCase() + name.substring(1);
                //获取属性的类型
                String type = field[j].getGenericType().toString();
                ValidatorType(bean, name, type);
            }
        }
    
     /**
         * 验证数据类型
         * @param bean
         * @param name
         * @param type
         * @param <T>
         */
        private static <T> void ValidatorType(T bean, String name, String type) {
            String[] types = {"class java.lang.String", "class java.lang.Integer", "class java.lang.Double"};
            int index = 2;
            try {
                Method mGet = bean.getClass().getMethod("get" + name);
                //如果type是类类型,则前面包含"class ",后面跟类名
                if (types[0].equals(type)) {
                    String value = (String) mGet.invoke(bean);
                    setParamValue(bean, name, value, "",String.class);
                } else if (types[1].equals(type)) {
                    //调用getter方法获取属性值
                    Integer value = (Integer) mGet.invoke(bean);
                    setParamValue(bean, name, value, 0,Integer.class);
                } else if (types[index].equals(type)) {
                    //调用getter方法获取属性值
                    Double value = (Double) mGet.invoke(bean);
                    setParamValue(bean, name, value, 0D,Double.class);
                }
            } catch (Exception e) {
                LOGGER.error("设置属性值出错:" + e.getMessage());
            }
        }
    
      /**
         * 设置属性值
         * @param bean
         * @param name
         * @param value
         * @param tmp
         * @param <T>
         * @throws NoSuchMethodException
         * @throws InvocationTargetException
         * @throws IllegalAccessException
         */
        private static <T> void setParamValue(T bean, String name, Object value, Object tmp,Class clazz) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
            if (value == null) {
                Method mSet = bean.getClass().getMethod("set" + name, clazz);
                mSet.invoke(bean, tmp);
            }
        }
    

    相关文章

      网友评论

          本文标题:判断类中属性是否为空并设置相应默认值

          本文链接:https://www.haomeiwen.com/subject/lkdnactx.html