• 反射将对象所有属性(含集合中所有属性)中字符串类型做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);
        }
    }
  • 相关阅读:
    php
    php数据排序---array_multisort
    IOS 线程描述
    IOS 进程描述
    IOS 强指针(strong)和弱指针(weak)
    IOS autosizing(设置控件的固定位置大小)
    IOS UIActivityIndicatorView动画
    IOS UIImageView的帧动画
    IOS Block动画
    IOS UIView动画(封装动画)
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/15224315.html
Copyright © 2020-2023  润新知