首页 > 编程语言 > 详细

JAVA 去除实体中类型为string的属性值中的空格

时间:2020-09-10 14:52:17      阅读:212      评论:0      收藏:0      [点我收藏+]

   前端传入的参数实体中,有时候会出现传入了一空格,导致操作失败,这时就可以利用java反射机制去除实体中类型为sting的属性值中的空格。  

  java代码示例:

 1 package com.spyang.util;
 2 
 3 import lombok.extern.slf4j.Slf4j;
 4 import org.assertj.core.util.Lists;
 5 
 6 import java.lang.reflect.Field;
 7 import java.lang.reflect.Method;
 8 import java.util.List;
 9 
10 /**
11  * 功能描述:  将类中的类型为‘String‘的属性值中的空格去掉
12  *
13  * @author shuangping.yang
14  * @version 1.0
15  * @ClassName BeanUtil
16  * @date 2020-9-10
17  */
18 @Slf4j
19 public class TrimBeanUtil {
20 
21     private static final String JAVA_TYPE = "java.lang.String";
22     private static final String GET = "get";
23     private static final String SET = "set";
24 
25     /**
26      * 循环去除每个字段的空格
27      *
28      * @param bean 实体
29      */
30     public static void beanAttributeValueTrim(Object bean) {
31         if (bean != null) {
32             //获取所有的字段包括public,private,protected,private
33             List<Field> fieldList = Lists.newArrayList(bean.getClass().getDeclaredFields());
34             fieldList.stream().forEach(field -> {
35                 //判断每个字段是否是sting类型,只有是string类型时才能去除前后空格
36                 if (JAVA_TYPE.equals(field.getType().getName())) {
37                     //获取每个字段的字段名
38                     String fieldName = field.getName();
39                     try {
40                         //利用java反射机制获取对应字段的值
41                         Object value = getFieldValue(bean, fieldName);
42                         if (null != value) {
43                             // 同样利用java 反射机制将修改后的值进行赋值
44                             setFieldValue(bean, fieldName, value.toString());
45                         }
46                     } catch (Exception e) {
47                         log.error("field conversion error ===>name{},msg{}", fieldName, e);
48                     }
49                 }
50             });
51         }
52     }
53 
54     /**
55      * 利用反射通过get方法获取bean中字段fieldName的值
56      *
57      * @param bean      实体
58      * @param fieldName 字段
59      * @return object   对应值
60      * @throws Exception
61      */
62     private static Object getFieldValue(Object bean, String fieldName) throws Exception {
63         Method method;
64         // 获取对应字段的get方法名称,首字母改为大写: getName
65         StringBuffer methodName = new StringBuffer();
66         methodName.append(GET).append(fieldName.substring(0, 1).toUpperCase())
67                 .append(fieldName.substring(1));
68         //获取对应的方法
69         method = bean.getClass().getMethod(methodName.toString(), new Class[0]);
70         return method.invoke(bean);
71     }
72 
73     /**
74      * 利用发射调用bean.set方法将value设置到字段
75      *
76      * @param bean       实体
77      * @param fieldName  字段
78      * @param fieldValue 赋值
79      * @throws Exception
80      */
81     private static void setFieldValue(Object bean, String fieldName, String fieldValue) throws Exception {
82         Class[] classArr = new Class[1];
83         StringBuffer methodName = new StringBuffer();
84         // 获取对应字段的set方法名称,首字母改为大写:setName
85         methodName.append(SET).append(fieldName.substring(0, 1).toUpperCase())
86                 .append(fieldName.substring(1));
87         //利用发射调用bean.set方法将value设置到字段
88         classArr[0] = JAVA_TYPE.getClass();
89         Method method = bean.getClass().getMethod(methodName.toString(), classArr);
90         method.invoke(bean, fieldValue.trim());
91     }
92 } 
技术分享图片
package com.spyang.entiy;

/**
 * @author shuangping.yang
 * @version 1.0
 * @ClassName Demo
 * @date 2020.09.10 上午 11:37 
 */
public class Demo {
    private String name;
    private String gender;
    private Integer age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Demo{" +
                "name=‘" + name + ‘\‘‘ +
                ", gender=‘" + gender + ‘\‘‘ +
                ", age=" + age +
                ‘}‘;
    }
}
实体类
技术分享图片
1   public static void main(String[] args) {
2         Demo demo = new Demo();
3         demo.setName(" shuangping.yang\t ");
4         demo.setGender(" 男 ");
5         demo.setAge(20);
6         beanAttributeValueTrim(demo);
7         System.out.println("实体:" + demo.toString());
8     }
例子

以上是本文的全部内容,希望对大家的学习有所帮助,也希望能得到大家支持。

JAVA 去除实体中类型为string的属性值中的空格

原文:https://www.cnblogs.com/yangshus/p/13645425.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!