溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用JavaBean根據(jù)指定條件設置屬性值默認值

發(fā)布時間:2022-03-02 14:34:20 來源:億速云 閱讀:322 作者:iii 欄目:開發(fā)技術

這篇“如何使用JavaBean根據(jù)指定條件設置屬性值默認值”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何使用JavaBean根據(jù)指定條件設置屬性值默認值”文章吧。

    JavaBean根據(jù)指定條件設置屬性值默認值

    使用場景

    當bean數(shù)據(jù)中已經(jīng)裝配好其他數(shù)據(jù),在邏輯以及數(shù)據(jù)轉換完成的最后一步進行數(shù)據(jù)默認值設置;如果bean的屬性較少,可以手動寫if條件就行了,如果bean的屬性太多,你不希望寫太多if的時候,這個方法是很不錯的方法;

    使用范圍

    僅限于當前類,不能給父類設置值

    也是參考了其他博主的方法,做的優(yōu)化和修改,由于時間過了很長,找不到原博主的參考文獻了,請見諒~

    /**
     * @Description: 根據(jù)條件,為bean設置默認指定屬性
     * @param sourceObject 當前需要操作的實體類
     * @param targetString 需要被替換的屬性的值
     * @param defaultValue 被替換的值
     * @return: void
     * @Author: 
     * @Date: 2021/4/26
    */
        public static void setDefaultValue(Object sourceObject, String targetString, String defaultValue) {
            if (sourceObject != null) {
                try {
                    Class<?> clazz = sourceObject.getClass();
                    Field[] fields = clazz.getDeclaredFields();
                    Object objectCopy = clazz.getConstructor(new Class[]{}).newInstance();
                    org.springframework.beans.BeanUtils.copyProperties(sourceObject, objectCopy);
                    for (Field field : fields) {
                        //修飾符
                        int mod = field.getModifiers();
                        if (Modifier.isStatic(mod)) {
                            continue;
                        }
                        //屬性名稱
                        String fieldName = field.getName();
                        if (fieldName.equals("serialVersionUID")) {
                            continue;
                        }
                        // 獲得屬性的首字母并轉換為大寫,與setXXX對應
                        String firstLetter = fieldName.substring(0, 1).toUpperCase();
                        String setMethodName = "set" + firstLetter + fieldName.substring(1);
                        //設置屬性的可訪問標識
                        boolean accessible = field.isAccessible();
                        //  log.info("可訪問標識:"+accessible);
                        field.setAccessible(true);
                        Method setMethod = clazz.getMethod(setMethodName, field.getType());
                        Object fieldValueO =field.get(sourceObject);
                        if (targetString!=null){
                            if (fieldValueO instanceof String){
                                String fieldValue = (String) field.get(sourceObject);
                                if (targetString.equals(fieldValue)){
                                        setMethod.invoke(objectCopy, defaultValue);//調用對象的setXXX方法
                                }
                            }
                        }else {
                            Object o = field.get(sourceObject);
                            if (o==null){
                                setMethod.invoke(objectCopy, defaultValue);//調用對象的setXXX方法
                            }
                        }
                        field.setAccessible(accessible);
                    }
                    org.springframework.beans.BeanUtils.copyProperties(objectCopy, sourceObject);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }

    使用示例

    setDefaultValue(sourceObject, null, "");//屬性值為null的時候設置默認值為空串
    setDefaultValue(sourceObject," null", "");//屬性值為"null"字符串的時候設置為空串

    JavaBean對象成員變量默認值及數(shù)組默認值

    public class StudentTest {
        private int id;
        private String name;
        int[] arr;
        public int[] getArr() {
            return arr;
        }
        public void setArr(int[] arr) {
            this.arr = arr;
        }
        public int getId() {
            return id;
        }
        public void setId(int id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    public class guanxiaokun {
        public static void main(String[] args) {
            //對于javaBean對象的成員變量,都有默認值,如果成員變量是基本類型int 默認值為0,如果是引用類型,其默認值為null
            //數(shù)組對象,如果沒有進行靜態(tài)初始化,數(shù)組對象其每一個索引位置,如果是存儲基本類型,默認值為0,如果存儲引用類型,默認值就為null
            System.out.println(new StudentTest().getId());//0
            System.out.println(new StudentTest().getName());//null
            System.out.println(new StudentTest().getArr());//null
            int[] arr = new int[3]; 
            String[] str = new String[3];
            System.out.println(arr[0]);//0
            System.out.println(str[0]);//null
        }
    }

    以上就是關于“如何使用JavaBean根據(jù)指定條件設置屬性值默認值”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業(yè)資訊頻道。

    向AI問一下細節(jié)

    免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

    AI