您好,登錄后才能下訂單哦!
這篇“如何使用JavaBean根據指定條件設置屬性值默認值”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何使用JavaBean根據指定條件設置屬性值默認值”文章吧。
當bean數據中已經裝配好其他數據,在邏輯以及數據轉換完成的最后一步進行數據默認值設置;如果bean的屬性較少,可以手動寫if條件就行了,如果bean的屬性太多,你不希望寫太多if的時候,這個方法是很不錯的方法;
僅限于當前類,不能給父類設置值
也是參考了其他博主的方法,做的優化和修改,由于時間過了很長,找不到原博主的參考文獻了,請見諒~
/** * @Description: 根據條件,為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"字符串的時候設置為空串
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 //數組對象,如果沒有進行靜態初始化,數組對象其每一個索引位置,如果是存儲基本類型,默認值為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根據指定條件設置屬性值默認值”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。