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

java判斷對(duì)象中某個(gè)屬性是否為空方法代碼

 更新時(shí)間:2023年07月07日 16:32:55   作者:大長(zhǎng)腿180  
這篇文章主要給大家介紹了關(guān)于java判斷對(duì)象中某個(gè)屬性是否為空的相關(guān)資料,最近遇到后臺(tái)接收值的時(shí)候,需要對(duì)接收對(duì)象進(jìn)行非空校驗(yàn),需要的朋友可以參考下

問題:java對(duì)象接受從數(shù)據(jù)庫查出來的數(shù)據(jù)時(shí),對(duì)對(duì)象的某一屬性進(jìn)行操作,在操作屬性中存儲(chǔ)的數(shù)據(jù)中不對(duì)進(jìn)行檢查,會(huì)出現(xiàn)空指針異常的情況。

問題再現(xiàn):新建一個(gè)實(shí)體類

public class Student {
    private Integer id;
    private String name;
    private String age;
    private String course;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getCourse() {
        return course;
    }
    public void setCourse(String course) {
        this.course = course;
    }
}

進(jìn)行測(cè)試

    @Test
    public void test(){
        //數(shù)據(jù)模擬
        Student student = new Student();
        student.setId(1);
        student.setName("張三");
        student.setAge("12");
        //這里不對(duì)course屬性賦值
//        student.setCourse("語文,數(shù)學(xué),英語");
        System.out.println(student.getId());
        System.out.println(student.getName());
        System.out.println(student.getAge());
        System.out.println(student.getCourse());
    }

輸出內(nèi)容:
        1
        張三
        12
        null

對(duì)course屬性進(jìn)行操作

    @Test
    public void test(){
        //數(shù)據(jù)模擬
        Student student = new Student();
        student.setId(1);
        student.setName("張三");
        student.setAge("12");
        //這里不對(duì)course屬性賦值
//        student.setCourse("語文,數(shù)學(xué),英語");
        System.out.println(student.getCourse().length());
    }

 這里就會(huì)報(bào)異常

 通過這里看以看出,取出實(shí)體類中的數(shù)據(jù)是沒問題的,但當(dāng)我們對(duì)course屬性進(jìn)行操作時(shí),就會(huì)包空指針異常。

解決問題思路:我們需要提前判斷這個(gè)屬性是否為空。

為了解決問題我們用到了反射,并把封裝成了一個(gè)工具類

public class ObjectUtil {
    /**
     * 判斷對(duì)象中部分屬性值是否不為空
     *
     * @param object       對(duì)象
     * @param excludeFieldNames 選擇校驗(yàn)的屬性名稱List集合
     * @return
     */
    public static boolean checkObjFieldsIsNotNull(Object object, List<String> excludeFieldNames) {
        if (null == object) {
            return false;
        }
        try {
            for (Field f : object.getClass().getDeclaredFields()) {
                f.setAccessible(true);
                if (excludeFieldNames.contains(f.getName()) && f.get(object) != null && StringUtils.isNotBlank(f.get(object).toString())) {
                    return true;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

使用工具類進(jìn)行判斷:

    @Test
    public void test(){
        //數(shù)據(jù)模擬
        Student student = new Student();
        student.setId(1);
        student.setName("張三");
        student.setAge("12");
        //這里不對(duì)course屬性賦值
//        student.setCourse("語文,數(shù)學(xué),英語");
        //當(dāng)course屬性為空時(shí)
        System.out.println("執(zhí)行開始");
        if (ObjectUtil.checkObjFieldsIsNotNull(student,Arrays.asList("course"))){
            System.out.println("執(zhí)行");
            System.out.println(student.getCourse().length());
        }
        System.out.println("執(zhí)行完畢");
    }

輸出結(jié)果: 

從這里可以看出if條件為空,并沒有執(zhí)行,因?yàn)榇藭r(shí)course屬性為空,判斷不成立。

當(dāng)course屬性不為空時(shí):

    @Test
    public void test(){
        //數(shù)據(jù)模擬
        Student student = new Student();
        student.setId(1);
        student.setName("張三");
        student.setAge("12");
        student.setCourse("語文,數(shù)學(xué),英語");
        System.out.println("執(zhí)行開始");
        if (ObjectUtil.checkObjFieldsIsNotNull(student,Arrays.asList("course"))){
            System.out.println("執(zhí)行");
            System.out.println(student.getCourse().length());
        }
        System.out.println("執(zhí)行完畢");
    }

執(zhí)行結(jié)果: 

可以看出:當(dāng)屬性不為空時(shí),判斷為真。 此時(shí)我們就完成了對(duì)屬性是否為空的判斷。

總結(jié)

到此這篇關(guān)于java判斷對(duì)象中某個(gè)屬性是否為空的文章就介紹到這了,更多相關(guān)java判斷對(duì)象屬性為空內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條的示例代碼

    SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條的示例代碼

    本文詳細(xì)的介紹了SpringBoot如何實(shí)現(xiàn)一個(gè)實(shí)時(shí)更新的進(jìn)度條,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • java String.split 無法使用小數(shù)點(diǎn)分割的問題

    java String.split 無法使用小數(shù)點(diǎn)分割的問題

    這篇文章主要介紹了java String.split 無法使用小數(shù)點(diǎn)分割的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    第三方網(wǎng)站微信登錄java代碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了第三方網(wǎng)站微信登錄的java代碼實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • 使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn)

    使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了使用SpringMVC的@Validated注解驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java插入修改刪除數(shù)據(jù)庫數(shù)據(jù)的基本方法

    Java插入修改刪除數(shù)據(jù)庫數(shù)據(jù)的基本方法

    這篇文章主要介紹了Java插入修改刪除數(shù)據(jù)庫數(shù)據(jù)的基本方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10
  • springboot配置druid多數(shù)據(jù)源的示例代碼

    springboot配置druid多數(shù)據(jù)源的示例代碼

    這篇文章主要介紹了springboot配置druid多數(shù)據(jù)源的示例代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • 源碼解析springbatch的job運(yùn)行機(jī)制

    源碼解析springbatch的job運(yùn)行機(jī)制

    這篇文章主要介紹了springbatch的job是如何運(yùn)行的,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • java實(shí)現(xiàn)聯(lián)機(jī)五子棋

    java實(shí)現(xiàn)聯(lián)機(jī)五子棋

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)聯(lián)機(jī)五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Java實(shí)現(xiàn)猜數(shù)字小游戲詳解流程

    Java實(shí)現(xiàn)猜數(shù)字小游戲詳解流程

    猜數(shù)字是興起于英國(guó)的益智類小游戲,起源于20世紀(jì)中期,一般由兩個(gè)人或多人玩,也可以由一個(gè)人和電腦玩。游戲規(guī)則為一方出數(shù)字,一方猜,今天我們來用Java把這個(gè)小游戲?qū)懗鰜砭毦毷?/div> 2021-10-10
  • 詳解SpringBoot如何優(yōu)雅的進(jìn)行全局異常處理

    詳解SpringBoot如何優(yōu)雅的進(jìn)行全局異常處理

    在SpringBoot的開發(fā)中,為了提高程序運(yùn)行的魯棒性,我們經(jīng)常需要對(duì)各種程序異常進(jìn)行處理,但是如果在每個(gè)出異常的地方進(jìn)行單獨(dú)處理的話,這會(huì)引入大量業(yè)務(wù)不相關(guān)的異常處理代碼,這篇文章帶大家了解一下如何優(yōu)雅的進(jìn)行全局異常處理
    2023-07-07

最新評(píng)論

吉木乃县| 元氏县| 洪洞县| 平乡县| 青龙| 宁明县| 东辽县| 兴文县| 松江区| 遵义市| 兰坪| 伊川县| 法库县| 阳高县| 长汀县| 聂荣县| 阳信县| 肇源县| 寿阳县| 老河口市| 灵丘县| 舒城县| 扎鲁特旗| 枣强县| 新化县| 临沧市| 增城市| 剑阁县| 太原市| 汉源县| 云和县| 沈阳市| 安塞县| 米林县| 阜阳市| 即墨市| 双桥区| 鹤庆县| 淅川县| 且末县| 河曲县|