zoukankan      html  css  js  c++  java
  • 反射将对象所有属性(含集合中所有属性)中字符串类型做trim()

    通过反射将对象所有属性(含属性为集合类型中的所有属性)中字符串类型做trim()处理

    public class FieldUtils {
        /**
         * 字符串 字符 去除 首位空格
         *
         * @param model
         * @throws Exception
         */
        public static void removeSpace(Object model) throws Exception {
            Class clazz = model.getClass();
            Field[] fields = clazz.getDeclaredFields();
            for (Field field : fields) {
                if (!field.isAccessible()) {
                    field.setAccessible(true);
                }
    
                //如果为字符串类型
                if (field.getGenericType().toString().equals("class java.lang.String")) {
                    Method getMethod = clazz.getMethod("get" + getMethodName(field.getName()));
                    String value = (String) getMethod.invoke(model);// 调用getter方法获取属性值
                    if (StringUtils.isNotBlank(value)) {
                        value = value.trim();
                        field.setAccessible(true);
                        field.set(model, value);
                    }
                }
                //如果为集合类型
                if (List.class.isAssignableFrom(field.getType())) {
                    Type t = field.getGenericType();
                    if (t instanceof ParameterizedType) {
                        Object object = field.get(model);
                        if (ObjectUtil.isEmpty(object)) {
                            continue;
                        }
                        Class clazz1 = object.getClass();//获取到属性的值的Class对象
                        Method m = clazz1.getDeclaredMethod("size");
                        int size = (Integer) m.invoke(field.get(model));//调用list的size方法,得到list的长度
                        for (int i = 0; i < size; i++) {//遍历list,调用get方法,获取list中的对象实例
                            Method getM = clazz1.getDeclaredMethod("get", int.class);
                            if (!getM.isAccessible()) {
                                getM.setAccessible(true);
                            }
                            removeSpace(getM.invoke(field.get(model), i));
                        }
                    }
                }
            }
        }
    
        /**
         * 返回首字母大写
         *
         * @param fildeName
         * @return
         * @throws Exception
         */
        private static String getMethodName(String fildeName) throws Exception {
            byte[] items = fildeName.getBytes();
            items[0] = (byte) ((char) items[0] - 'a' + 'A');
            return new String(items);
        }
    }
  • 相关阅读:
    Mac下安装cscope和ctags
    MAC的VIMRC
    我的Linux系统的VIMRC
    关于在VI中查看BIN文件二进制值不对的问题
    没有关心过编写代码方式的好处,你是不是也是这样?
    四十不惑,真的不惑了么?
    jQuery通过text值来设置选定,以及遍历select的选项个数和遍历
    C#解析XML文件
    网页调用本地程序(Windows下浏览器全兼容)
    C#获取文件的md5
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/15224315.html
Copyright © 2011-2022 走看看