欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

使用場景

當(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í)間過了很長,找不到原博主的參考文獻(xiàn)了,請見諒~

/**
?* @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對應(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)用對象的setXXX方法
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? Object o = field.get(sourceObject);
? ? ? ? ? ? ? ? ? ? ? ? if (o==null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? setMethod.invoke(objectCopy, defaultValue);//調(diào)用對象的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對象成員變量默認(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) {
        //對于javaBean對象的成員變量,都有默認(rèn)值,如果成員變量是基本類型int 默認(rèn)值為0,如果是引用類型,其默認(rèn)值為null
        //數(shù)組對象,如果沒有進(jìn)行靜態(tài)初始化,數(shù)組對象其每一個(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)文章

  • Java使用線程池實(shí)現(xiàn)socket編程的方法詳解

    Java使用線程池實(shí)現(xiàn)socket編程的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Java使用線程池實(shí)現(xiàn)socket編程的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • MyBatis中常見的SQL執(zhí)行方式及其使用方法

    MyBatis中常見的SQL執(zhí)行方式及其使用方法

    MyBatis可能很多人都一直在用,但是MyBatis的SQL執(zhí)行流程可能并不是所有人都清楚了,下面這篇文章主要給大家介紹了關(guān)于MyBatis中常見的SQL執(zhí)行方式及其使用的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Spring Transaction事務(wù)實(shí)現(xiàn)流程源碼解析

    Spring Transaction事務(wù)實(shí)現(xiàn)流程源碼解析

    此文就Spring 事務(wù)實(shí)現(xiàn)流程進(jìn)行源碼解析,我們可以借此對Spring框架更多一層理解,下面以xml形式創(chuàng)建一個(gè)事務(wù)進(jìn)行分析
    2022-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(39)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(39)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • java編程實(shí)現(xiàn)獲取服務(wù)器IP地址及MAC地址的方法

    java編程實(shí)現(xiàn)獲取服務(wù)器IP地址及MAC地址的方法

    這篇文章主要介紹了java編程實(shí)現(xiàn)獲取機(jī)器IP地址及MAC地址的方法,實(shí)例分析了Java分別針對單網(wǎng)卡及多網(wǎng)卡的情況下獲取服務(wù)器IP地址與MAC地址的相關(guān)技巧,需要的朋友可以參考下
    2015-11-11
  • Springboot Mybatis Plus自動(dòng)生成工具類詳解代碼

    Springboot Mybatis Plus自動(dòng)生成工具類詳解代碼

    mybatis-plus 是一個(gè) Mybatis 的增強(qiáng)工具,在 Mybatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生,這篇文章帶你使用Springboot Mybatis Plus自動(dòng)生成工具類
    2021-11-11
  • SpringBoot如何優(yōu)雅的輸出異常信息

    SpringBoot如何優(yōu)雅的輸出異常信息

    在Java中,異常(Exception)是Java程序在運(yùn)行過程中出現(xiàn)的一種特殊情況,會(huì)中斷正常的程序流程,異??梢允沁\(yùn)行時(shí)錯(cuò)誤,也可以是編程錯(cuò)誤,本文將給大家詳細(xì)的介紹一下SpringBoot如何優(yōu)雅的輸出異常信息,需要的朋友可以參考下
    2023-09-09
  • 解決springboot項(xiàng)目不配置數(shù)據(jù)源啟動(dòng)報(bào)錯(cuò)問題

    解決springboot項(xiàng)目不配置數(shù)據(jù)源啟動(dòng)報(bào)錯(cuò)問題

    這篇文章主要介紹了解決springboot項(xiàng)目不配置數(shù)據(jù)源啟動(dòng)報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • idea2020安裝MybatisCodeHelper插件的圖文教程

    idea2020安裝MybatisCodeHelper插件的圖文教程

    這篇文章主要介紹了idea2020安裝MybatisCodeHelper插件的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • OpenCV在Android上的應(yīng)用示例

    OpenCV在Android上的應(yīng)用示例

    這篇文章主要介紹了OpenCV在Android上的應(yīng)用示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論