使用JavaBean根據(jù)指定條件設置屬性值默認值方式
JavaBean根據(jù)指定條件設置屬性值默認值
使用場景
當bean數(shù)據(jù)中已經裝配好其他數(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
}
}以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Java使用線程池實現(xiàn)socket編程的方法詳解
這篇文章主要為大家詳細介紹了Java使用線程池實現(xiàn)socket編程的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
Spring Transaction事務實現(xiàn)流程源碼解析
此文就Spring 事務實現(xiàn)流程進行源碼解析,我們可以借此對Spring框架更多一層理解,下面以xml形式創(chuàng)建一個事務進行分析2022-09-09
java編程實現(xiàn)獲取服務器IP地址及MAC地址的方法
這篇文章主要介紹了java編程實現(xiàn)獲取機器IP地址及MAC地址的方法,實例分析了Java分別針對單網卡及多網卡的情況下獲取服務器IP地址與MAC地址的相關技巧,需要的朋友可以參考下2015-11-11
Springboot Mybatis Plus自動生成工具類詳解代碼
mybatis-plus 是一個 Mybatis 的增強工具,在 Mybatis 的基礎上只做增強不做改變,為簡化開發(fā)、提高效率而生,這篇文章帶你使用Springboot Mybatis Plus自動生成工具類2021-11-11
解決springboot項目不配置數(shù)據(jù)源啟動報錯問題
這篇文章主要介紹了解決springboot項目不配置數(shù)據(jù)源啟動報錯問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
idea2020安裝MybatisCodeHelper插件的圖文教程
這篇文章主要介紹了idea2020安裝MybatisCodeHelper插件的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09

