JAVA 去除實體中類型為string的屬性值中的空格


   前端傳入的參數實體中,有時候會出現傳入了一空格,導致操作失敗,這時就可以利用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     }
例子

以上是本文的全部內容,希望對大家的學習有所幫助,也希望能得到大家支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM