【BeanTrimUtil】通过反射去除JavaBean中String类型数据的空格:一行代码搞定整个Bean的字符串去空!

【原文地址】

https://blog.csdn.net/qq_36170500/article/details/107250282

  • 简化不必要的代码逻辑
  • 纯原生环境亦可运行
  • 解决空指针异常抛出

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Objects;

/**
 * @author zhoudeshui v1.2
 * @Desc 版权声明:本文为CSDN博主「一个人的编程」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
 * 原文链接:<a href="https://blog.csdn.net/qq_36170500/article/details/107250282">...</a>
 */
public class BeanTrimUtil {


    // 整个类的所有string类型字段去空值,trim() 去空
    public static Object removeSpaces(Object object) {
        Class<?> clazz = object.getClass();
        //获取到所有的属性值
        Field[] fields = clazz.getDeclaredFields();
        Method setMethod = null;
        Method getMethod = null;

        Object obj1 = null;
        for (Field field : fields) {
            //判断属性是否为字符类型

            if ("class java.lang.String".equals(field.getGenericType().toString())) {
                try {
                    //获取到当前字段名称,并首字母大写
                    String itemName = titleCase(field.getName());
                    //根据属性名获取到方法名,再根据方法名获取到方法
                    getMethod = clazz.getMethod("get" + itemName);
                    setMethod = clazz.getMethod("set" + itemName, String.class);
                    //执行获取到的方法,并传入参数,获取到当前字段对应的属性值
                    String val = (String) getMethod.invoke(object);// 调用getter方法获取属性值
                    if (Objects.isNull(val)) {
                        continue;
                    }
                    //执行set类型方法,为当前字段赋值为.trim()后的新值 替换其中空字符
                    obj1 = setMethod.invoke(object, val.trim());
//                    obj1 = setMethod.invoke(object, val.trim().replace(" ", ""));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return object;
    }

    public static void removeSpacesVoid(Object object) {
        Class<?> clazz = object.getClass();
        //获取到所有的属性值
        Field[] fields = clazz.getDeclaredFields();
        Method setMethod = null;
        Method getMethod = null;
        for (Field field : fields) {
            //判断属性是否为字符类型
            if ("class java.lang.String".equals(field.getGenericType().toString())) {
                try {
                    //获取到当前字段名称,并首字母大写
                    String itemName = titleCase(field.getName());
                    //根据属性名获取到方法名,再根据方法名获取到方法
                    getMethod = clazz.getMethod("get" + itemName);
                    setMethod = clazz.getMethod("set" + itemName, String.class);
                    //执行获取到的方法,并传入参数,获取到当前字段对应的属性值
                    String val = (String) getMethod.invoke(object);// 调用getter方法获取属性值
                    if (Objects.isNull(val)) {
                        continue;
                    }
                    //执行set类型方法,为当前字段赋值为.trim()后的新值 替换其中空字符
                    setMethod.invoke(object, val.trim());
//                    setMethod.invoke(object, val.trim().replace(" ", ""));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //首字母大写
    public static String titleCase(String s) {
        char[] c = s.toCharArray();
        if ((c[0] >= 'a') && (c[0] <= 'z')) {
            c[0] -= 32;
        }
        return new String(c);
    }
}

使用示例

在这里插入图片描述

removeSpacesVoid() 无需接参

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值