最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaBean根據(jù)指定條件設(shè)置屬性值默認(rèn)值方式

 更新時(shí)間:2022年03月02日 11:21:05   作者:StrKai  
這篇文章主要介紹了使用JavaBean根據(jù)指定條件設(shè)置屬性值默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

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

使用場(chǎng)景

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

使用范圍

僅限于當(dāng)前類,不能給父類設(shè)置值

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

/**
?* @Description: 根據(jù)條件,為bean設(shè)置默認(rèn)指定屬性
?* @param sourceObject 當(dāng)前需要操作的實(shí)體類
?* @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;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? // 獲得屬性的首字母并轉(zhuǎn)換為大寫,與setXXX對(duì)應(yīng)
? ? ? ? ? ? ? ? ? ? String firstLetter = fieldName.substring(0, 1).toUpperCase();
? ? ? ? ? ? ? ? ? ? String setMethodName = "set" + firstLetter + fieldName.substring(1);
? ? ? ? ? ? ? ? ? ? //設(shè)置屬性的可訪問標(biāo)識(shí)
? ? ? ? ? ? ? ? ? ? boolean accessible = field.isAccessible();
? ? ? ? ? ? ? ? ? ? // ?log.info("可訪問標(biāo)識(shí):"+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);//調(diào)用對(duì)象的setXXX方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? Object o = field.get(sourceObject);
? ? ? ? ? ? ? ? ? ? ? ? if (o==null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? setMethod.invoke(objectCopy, defaultValue);//調(diào)用對(duì)象的setXXX方法
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? field.setAccessible(accessible);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? org.springframework.beans.BeanUtils.copyProperties(objectCopy, sourceObject);
? ? ? ? ? ? } catch (Exception e) {
? ? ? ? ? ? ? ? throw new RuntimeException(e);
? ? ? ? ? ? }
? ? ? ? }
? ? }

使用示例

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

JavaBean對(duì)象成員變量默認(rèn)值及數(shù)組默認(rèn)值

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) {
        //對(duì)于javaBean對(duì)象的成員變量,都有默認(rèn)值,如果成員變量是基本類型int 默認(rèn)值為0,如果是引用類型,其默認(rèn)值為null
        //數(shù)組對(duì)象,如果沒有進(jìn)行靜態(tài)初始化,數(shù)組對(duì)象其每一個(gè)索引位置,如果是存儲(chǔ)基本類型,默認(rèn)值為0,如果存儲(chǔ)引用類型,默認(rèn)值就為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
    }
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Spring Cloud 熔斷機(jī)制--斷路器

    詳解Spring Cloud 熔斷機(jī)制--斷路器

    這篇文章主要介紹了詳解Spring Cloud 熔斷機(jī)制--斷路器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決

    springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決

    這篇文章主要介紹了springcloud連接遠(yuǎn)程nacos失敗顯示localhost服務(wù)連接失敗的問題解決,文中有詳細(xì)的代碼示例供大家參考,對(duì)大家解決問題有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • 深入Java Final

    深入Java Final

    本篇文章,小編將為大家介紹Java Final,有需要的朋友可以參考一下
    2013-04-04
  • Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解

    Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解

    這篇文章主要介紹了Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,需要的朋友可以參考下,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Java基礎(chǔ)之Maven詳解

    Java基礎(chǔ)之Maven詳解

    這篇文章主要介紹了Java基礎(chǔ)之Maven詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 一文搞懂Java中的線程安全與線程同步

    一文搞懂Java中的線程安全與線程同步

    線程安全指在被多個(gè)線程訪問時(shí),程序可以持續(xù)進(jìn)行正確的處理。線程同步是指程序中用于控制不同線程間操作發(fā)生相對(duì)順序的機(jī)制。本文將通過示例詳細(xì)為大家講講二者的使用,需要的可以參考一下
    2022-06-06
  • IDEA控制臺(tái)日志中文亂碼解決方案(好用!)

    IDEA控制臺(tái)日志中文亂碼解決方案(好用!)

    這篇文章主要給大家介紹了關(guān)于IDEA控制臺(tái)日志中文亂碼解決的相關(guān)資料,平常的開發(fā)中,我們通常會(huì)用到日志打印進(jìn)行開發(fā),文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Spring Boot整合Spring Security的示例代碼

    Spring Boot整合Spring Security的示例代碼

    這篇文章主要介紹了Spring Boot整合Spring Security的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • SpringBoot整合SpringSecurity和JWT和Redis實(shí)現(xiàn)統(tǒng)一鑒權(quán)認(rèn)證

    SpringBoot整合SpringSecurity和JWT和Redis實(shí)現(xiàn)統(tǒng)一鑒權(quán)認(rèn)證

    Spring Security是一個(gè)可以為Java應(yīng)用程序提供全面安全服務(wù)的框架,同時(shí)它也可以輕松擴(kuò)展以滿足自定義需求,本文主要介紹了SpringBoot整合SpringSecurity和JWT和Redis實(shí)現(xiàn)統(tǒng)一鑒權(quán)認(rèn)證,感興趣的可以了解一下
    2023-11-11
  • 使用IDEA畫UML圖的詳細(xì)步驟

    使用IDEA畫UML圖的詳細(xì)步驟

    UML是面向?qū)ο笤O(shè)計(jì)的建模工具,獨(dú)立于任何具體程序設(shè)計(jì)語言,是一種為面向?qū)ο笙到y(tǒng)的產(chǎn)品進(jìn)行說明、可視化和編制文檔的一種標(biāo)準(zhǔn)語言,本文重點(diǎn)給大家介紹使用IDEA畫UML圖的詳細(xì)步驟,需要的朋友參考下吧
    2021-06-06

最新評(píng)論

平塘县| 右玉县| 漠河县| 白山市| 哈密市| 海门市| 嘉善县| 惠来县| 怀安县| 建平县| 浮梁县| 洞口县| 平南县| 铜鼓县| 东安县| 德阳市| 贡觉县| 兴隆县| 靖远县| 青龙| 阳曲县| 长丰县| 科尔| 商水县| 浦县| 淳安县| 临泉县| 马公市| 日照市| 厦门市| 江川县| 万盛区| 栾川县| 新巴尔虎左旗| 广州市| 南城县| 富源县| 龙门县| 宿州市| 江门市| 陈巴尔虎旗|