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

news2024/10/2 1:36:56

【原文地址】

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

  • 简化不必要的代码逻辑
  • 纯原生环境亦可运行

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

/**
 * @author zhoudeshui v1.1
 * @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方法获取属性值
                    //执行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方法获取属性值
                    //执行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() 无需接参

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1024828.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公众号迁移线上公证靠谱吗?

公众号账号迁移的作用是什么&#xff1f;只能变更主体吗&#xff1f;微信公众平台的帐号迁移功能可将原公众号的粉丝、文章素材、违规记录、留言功能、名称等迁移至新的公众号。通过迁移可以实现公众号的公司主体变更、粉丝转移、开通留言功能、服务号转为订阅号等作用。因此不…

电脑剪切板在哪?4个方法教你提高效率!

“我在电脑上复制了一些图像&#xff0c;电脑显示已经保存在了剪切板&#xff0c;但是我找了好久都不知道电脑的剪切板在哪。有朋友可以指点一下吗&#xff1f;” 电脑剪切板是计算机操作中一个常用且强大的工具&#xff0c;它允许你复制、剪切和粘贴文本、图像、文件等。无论是…

期权佣金是如何收取的?成交手续费是怎么计算的?

现在期权新开户佣金1.7元/张&#xff0c;超优惠活动&#xff01; 期权佣金是默认在6元一张收取的&#xff0c;可以申请调低的&#xff0c;证券公司可以结合运营成本制定合理的期权佣金优惠费率&#xff0c;但是不同的客户&#xff0c;不同的实际情况&#xff0c;都可能会影响期…

UML六大关系总结

UML六大关系有&#xff1a;继承、关系、聚合、组合、实现、依赖。分为通过图和代码总结这些关系。 1、继承 class Bird&#xff1a;Animal { } 说明&#xff1a;一段都是子类继承父类&#xff0c;在子类的后面用一个冒号表示&#xff0c;冒号后面跟着父类的名字。继承只能继…

【前端知识】Three 学习日志(十二)—— WebGL渲染器设置(锯齿模糊)

Three 学习日志&#xff08;十二&#xff09;—— WebGL渲染器设置(锯齿模糊) 一、设置抗锯齿 const renderer new THREE.WebGLRenderer({antialias:true, });二、效果对比 设置前&#xff1a; 设置后&#xff1a; 三、查看并设置设备像素比 // 不同硬件设备的屏幕的设…

乐划锁屏推出“屏上看展”,用创意“解锁”艺术新体验

在移动互联网时代,手机不仅是重要的通讯工具,作为点亮屏幕后的“第一眼”,手机锁屏也为人们提供了更加集成、更加多元的信息接收渠道。为了满足人们的碎片化消遣需求,加速信息传播,OPPO依托锁屏点亮即触达的特点,将锁屏壁纸作为探索碎片化娱乐的新通道,推出了乐划锁屏。 在乐划…

成集云 | 用友NC集成聚水潭ERP(用友NC主管库存)| 解决方案

源系统成集云目标系统 方案介绍 用友NC是用友NC产品的全新系列&#xff0c;是面向集团企业的世界级高端管理软件。它以“全球化集团管控、行业化解决方案、全程化电子商务、平台化应用集成”的管理业务理念而设计&#xff0c;采用J2EE架构和先进开放的集团级开发平台…

VMware Esxi 7.0.3用户名密码都对,网页却无法登录问题解决

Esxi 7.0.3安装完成&#xff0c;重启之后&#xff0c;下面就是esxi的界面&#xff1a; 之后通过网页管理esxi&#xff0c;输入网址&#xff0c;出现一个问题&#xff1a; &#xff08;esxi已连接上&#xff0c;所以拿其他网段举例&#xff09;连接不上&#xff0c;无法访问此页…

MVVM模式理解

链接&#xff1a; MVVM框架理解及其原理实现 - 知乎 (zhihu.com) 重点&#xff1a; 1.将展示的界面窗口和创建的构件是数据进行分离 2.利用一个中间商进行数据的处理&#xff0c;所有的数据通过中间商进行处理

Python 数独求解器

文章目录 使用回溯算法在Python中解决数独总结 Sudoku&#xff08;数独&#xff09;是一种基于逻辑的数字填充谜题游戏&#xff0c;最受喜爱的是那些热爱逻辑和推理的人。解决数独谜题有助于提高集中注意力和逻辑思维能力。 本文介绍了如何使用Python解决数独谜题。 使用回溯算…

0.UML

1.图 1.1类图含义 第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法或行为。注意前面的符号, ,表示public,-,表示private,#,表示protected。 1.2接口图 与类图的区别主要是顶端有<< interface >…

回收站清空文件恢复?恢复文件,就看这4种方法!

电脑回收站对于大部分经常误删文件的用户来说&#xff0c;确实帮了大忙。但有时&#xff0c;用户可能会有定期清空回收站的习惯。回收站清空后文件还能恢复吗&#xff1f;这确实是个烦人的问题。比如下面这个用户所遇到的问题&#xff1a; “大家快帮帮我吧&#xff01;昨天看电…

淘宝/天猫API 获得淘宝app商品详情原数据(优惠券详情)

item_get_app-获得淘宝app商品详情原数据 taobao.item_get_app 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;获取Key和secret接入secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#x…

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块

学Python的漫画漫步进阶 -- 第十一步.常用的内置模块 十一、常用的内置模块11.1 数学计算模块——math11.2 日期时间模块——datetime11.2.1 datetime类11.2.2 date类11.2.3 time类11.2.4 计算时间跨度类——timedelta11.2.5 将日期时间与字符串相互转换 11.3 正则表达式模块—…

git vscode

01&#xff1a;工作区 **02&#xff1a;暂存区 git add . 3&#xff1a;本地库 git commit -m ’ 4&#xff1a;远程库 git push example 点击箭头之后

[架构之路-218]: 架构师责权利的定位, 架构师是技术领导者、决策者、激励者、企业家思维、战略思维、理论指导

目录 一、架构的诉求与系统的规模和复杂度强相关 1.1 系统的规模和复杂度对架构的影响 1.2 系统的业务需求对架构的影响 1.3 业架构和软件架构 二、架构师的类型 三、系统架构师 3.1 什么是系统架构师 3.2 系统架构师的技术素质要求 3.3 系统架构师的管理素质要求 3.…

【小黑送书—第二期】>>《用户画像:平台构建与业务实践》

在大数据时代&#xff0c;如何有效地挖掘数据价值并通过画像数据进行呈现&#xff0c;如何基于画像数据构建平台功能并提高业务产出&#xff0c;是值得各类公司和业务人员思考并付诸实践的事情。 通过画像释放大数据价值。大数据时代不缺少数据&#xff0c;而是缺乏挖掘数据价值…

【C++面向对象侯捷】7.三大函数:拷贝构造,拷贝复制,析构

文章目录 三个特殊函数构造函数和析构函数class with pointer members 必须有 拷贝构造 和 拷贝复制【因为编译器默认是浅拷贝】拷贝构造函数拷贝复制函数没有检查自我赋值&#xff0c;杀掉空间就完了.. 三个特殊函数 构造函数和析构函数 class with pointer members 必须有 拷…

Chrome下载离线安装包进行安装

https://www.google.cn/chrome/index.html?standalone1 standalone1表示下载离线安装包 ChromeSetup.exe是在线安装的就只有1M ChromeStandaloneSetup64.exe是离线安装的有10M

USI-0002 SDI-1624 HONEYWELL ,用于工业和物流4.0的人工智能

USI-0002 SDI-1624 HONEYWELL &#xff0c;用于工业和物流4.0的人工智能 生产、仓库、运输——生产、储存、分拣或包装货物的地方&#xff0c;也是提货的地方。这意味着几个单独的货物从存储单元如箱子或纸盒中取出并重新组装。有了FLAIROP(机器人采摘的联邦学习)项目费斯托…