亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java8新特性O(shè)ptional類處理空值判斷回避空指針異常應(yīng)用

 更新時(shí)間:2022年04月02日 17:43:37   作者:Java知識(shí)圖譜  
這篇文章主要介紹了Java8新特性O(shè)ptional類處理空值判斷回避空指針異常應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪

一、序言

空值異常是應(yīng)用運(yùn)行時(shí)常見的異常,傳統(tǒng)方式為了編寫健壯的應(yīng)用,常常使用多層嵌套邏輯判斷回避空指針異常。Java8新特性之Optional為此類問題提供了優(yōu)雅的解決方式。

廣大程序員朋友對空值異常刻骨銘心,因此Optional一經(jīng)推出,廣受贊譽(yù)。

二、問題復(fù)原

(一)素材準(zhǔn)備

public class LoginUser implements UserDetails {
    private Long deptId;
    private String token;
    private Long loginTime;
    private Long expireTime;
    private String ipaddr;
    private String loginLocation;
    private String browser;
    private String os;
    private SysUser user;
}
public class SysUser {
    private Long userId;
    private Long deptId;
    private String userName;
}

相關(guān)SetterGetter方法自行添加。

(二)模擬演示

1、傳統(tǒng)方式

/**
 * 普通嵌套判斷方式判斷空值
 *
 * @param loginUser 登錄用戶體
 * @return 用戶ID
 */
public Long getUserId(LoginUser loginUser){
    if (loginUser!=null) {
        SysUser user = loginUser.getUser();
        if (user!=null) {
            return user.getUserId();
        }
    }
    return null;
}

方法參數(shù)傳遞的變量loginUser使用前不確定是否為空,因此需要邏輯判斷;user變量使用前不確定是否為空,因此需要邏輯判斷。兩層邏輯判斷之后,方能安心調(diào)用獲取UserId方法。

顯而易見,當(dāng)對象嵌套層次較深時(shí),需要做的邏輯判斷越多,代碼越復(fù)雜。

2、優(yōu)雅方式

/**
 * 通過Optinal處理空值判斷
 *
 * @param loginUser 登錄用戶體
 * @return 用戶ID
 */
public Long getUserId(LoginUser loginUser) {
    return Optional.ofNullable(loginUser)
        .map(LoginUser::getUser).map(SysUser::getUserId).orElse(null);
}

在滿足同樣需求的前提下,使用Optional類代碼量更少,業(yè)務(wù)邏輯更清晰。

Optional使用方法引用的語法,屬于Lambda表達(dá)式的一種。

三、小結(jié)

本文介紹了Optional類在處理空值判斷場景的應(yīng)用,通過對比的方式,將Optional的優(yōu)點(diǎn)展現(xiàn)出來。從場景入手學(xué)技術(shù)比單調(diào)的技術(shù)講解更有趣味。

以上就是Java8新特性O(shè)ptional類處理空值判斷回避空指針異常應(yīng)用的詳細(xì)內(nèi)容,更多關(guān)于Optional類空值判斷回避空指針異常處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java EE中的編碼問題及解決方案(總結(jié))

    Java EE中的編碼問題及解決方案(總結(jié))

    在JavaEE開發(fā)中,處理字符編碼問題是確保數(shù)據(jù)準(zhǔn)確傳輸和顯示的關(guān)鍵,常見的編碼問題包括表單提交亂碼、JSP頁面編碼、請求參數(shù)編碼不一致等,本文給大家介紹Java EE中的編碼問題及解決方案,感興趣的朋友一起看看吧
    2024-10-10
  • Java對象布局(JOL)實(shí)現(xiàn)過程解析

    Java對象布局(JOL)實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Java對象布局(JOL)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 如何優(yōu)雅的處理Spring Boot異常信息詳解

    如何優(yōu)雅的處理Spring Boot異常信息詳解

    這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的處理Spring Boot異常信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • RocketMQ的兩種消費(fèi)模式詳解

    RocketMQ的兩種消費(fèi)模式詳解

    這篇文章主要介紹了RocketMQ的兩種消費(fèi)模式詳解,RocketMQ主要提供了兩種消費(fèi)模式,集群消費(fèi)以及廣播消費(fèi),我們只需要在定義消費(fèi)者的時(shí)候通過setMessageModel(MessageModel.XXX),需要的朋友可以參考下
    2023-10-10
  • Java?CyclicBarrier錯(cuò)誤使用的實(shí)例

    Java?CyclicBarrier錯(cuò)誤使用的實(shí)例

    文章描述了一個(gè)Java程序使用CyclicBarrier實(shí)現(xiàn)兩個(gè)線程交替打印字母和數(shù)字時(shí)遇到的問題,由于線程執(zhí)行順序不當(dāng),導(dǎo)致輸出結(jié)果與預(yù)期不符,通過調(diào)整線程的等待和打印順序,解決了問題,文章還提供了一個(gè)控制流圖來詳細(xì)解釋修改前后的程序邏輯
    2025-01-01
  • elasticsearch如何根據(jù)條件刪除數(shù)據(jù)

    elasticsearch如何根據(jù)條件刪除數(shù)據(jù)

    Elasticsearch是一個(gè)基于Apache Lucene?的開源搜索引擎,無論在開源還是專有領(lǐng)域,Lucene 可以被認(rèn)為是迄今為止最先進(jìn)、性能最好的、功能最全的搜索引擎庫,這篇文章主要介紹了elasticsearch如何根據(jù)條件刪除數(shù)據(jù),需要的朋友可以參考下
    2023-03-03
  • java對象中什么時(shí)候適合用static修飾符踩坑解決記錄

    java對象中什么時(shí)候適合用static修飾符踩坑解決記錄

    這篇文章主要為大家介紹了java對象中什么時(shí)候適合用static修飾符踩坑解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼

    Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼

    這篇文章主要介紹了Spring Boot 實(shí)現(xiàn)Restful webservice服務(wù)端示例代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • 23種設(shè)計(jì)模式(3) java原型模式

    23種設(shè)計(jì)模式(3) java原型模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計(jì)模式之java原型模式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程

    基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程

    這篇文章主要介紹了基于Java的電梯系統(tǒng)實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評論