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

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為此類問(wèn)題提供了優(yōu)雅的解決方式。

廣大程序員朋友對(duì)空值異??坦倾懶模虼?code>Optional一經(jīng)推出,廣受贊譽(yù)。

二、問(wèn)題復(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)對(duì)象嵌套層次較深時(shí),需要做的邏輯判斷越多,代碼越復(fù)雜。

2、優(yōu)雅方式

/**
 * 通過(guò)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使用方法引用的語(yǔ)法,屬于Lambda表達(dá)式的一種。

三、小結(jié)

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

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

相關(guān)文章

  • SpringBoot多級(jí)緩存實(shí)現(xiàn)方案總結(jié)

    SpringBoot多級(jí)緩存實(shí)現(xiàn)方案總結(jié)

    所謂多級(jí)緩存,是指在整個(gè)系統(tǒng)架構(gòu)的不同系統(tǒng)層面進(jìn)行數(shù)據(jù)緩存,以提升訪問(wèn)速度,多級(jí)緩存就是為了解決項(xiàng)目服務(wù)中單一緩存使用不足的缺點(diǎn),本文我們將給大家總結(jié)了SpringBoot多級(jí)緩存實(shí)現(xiàn)方案,需要的朋友可以參考下
    2023-08-08
  • java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單的樣式

    java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單的樣式

    這篇文章主要給大家介紹了關(guān)于java利用遞歸調(diào)用實(shí)現(xiàn)樹形菜單樣式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Java使用新浪微博API開發(fā)微博應(yīng)用的基本方法

    Java使用新浪微博API開發(fā)微博應(yīng)用的基本方法

    這篇文章主要介紹了Java使用新浪微博API開發(fā)微博應(yīng)用的基本方法,文中還給出了一個(gè)不使用任何SDK實(shí)現(xiàn)Oauth授權(quán)并實(shí)現(xiàn)簡(jiǎn)單的發(fā)布微博功能的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-11-11
  • 基于@AliasFor注解的用法及說(shuō)明

    基于@AliasFor注解的用法及說(shuō)明

    這篇文章主要介紹了基于@AliasFor注解的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • SpringBoot集成Drools打造動(dòng)態(tài)規(guī)則管理模板引擎

    SpringBoot集成Drools打造動(dòng)態(tài)規(guī)則管理模板引擎

    本文詳解SpringBoot與Drools的整合方法,涵蓋依賴管理、規(guī)則文件編寫、KieService配置等,旨在通過(guò)規(guī)則引擎實(shí)現(xiàn)業(yè)務(wù)邏輯動(dòng)態(tài)化管理,提升微服務(wù)應(yīng)用的靈活性、可維護(hù)性及快速部署能力,對(duì)SpringBoot Drools相關(guān)知識(shí)感興趣的朋友一起看看吧
    2025-07-07
  • Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能

    Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能

    這篇文章主要介紹了Java Web使用Html5 FormData實(shí)現(xiàn)多文件上傳功能,需要的朋友可以參考下
    2017-07-07
  • Java編寫簡(jiǎn)單猜數(shù)游戲

    Java編寫簡(jiǎn)單猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了Java編寫簡(jiǎn)單猜數(shù)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • JAVA解析XML字符串簡(jiǎn)單方法代碼案例

    JAVA解析XML字符串簡(jiǎn)單方法代碼案例

    這篇文章主要介紹了JAVA解析XML字符串簡(jiǎn)單方法代碼案例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 基于SpringBoot + Redis實(shí)現(xiàn)密碼暴力破解防護(hù)

    基于SpringBoot + Redis實(shí)現(xiàn)密碼暴力破解防護(hù)

    在現(xiàn)代應(yīng)用程序中,保護(hù)用戶密碼的安全性是至關(guān)重要的,密碼暴力破解是指通過(guò)嘗試多個(gè)密碼組合來(lái)非法獲取用戶賬戶的密碼,為了保護(hù)用戶密碼不被暴力破解,我們可以使用Spring Boot和Redis來(lái)實(shí)現(xiàn)一些防護(hù)措施,本文將介紹如何利用這些技術(shù)來(lái)防止密碼暴力破解攻擊
    2023-06-06
  • Tomcat報(bào)錯(cuò):HTTP Status 500 (Wrapper cannot find servlet class)解決辦法

    Tomcat報(bào)錯(cuò):HTTP Status 500 (Wrapper cannot find servlet class)

    這篇文章主要介紹了Tomcat報(bào)錯(cuò):HTTP Status 500 (Wrapper cannot find servlet class)解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-11-11

最新評(píng)論

霍山县| 东安县| 天祝| 库车县| 克什克腾旗| 四川省| 昂仁县| 怀安县| 子洲县| 宁陵县| 沂南县| 大厂| 吴堡县| 大冶市| 教育| 利津县| 开封县| 海门市| 侯马市| 巴马| 韶关市| 兰考县| 太白县| 濉溪县| 玛曲县| 绍兴县| 惠水县| 正定县| 禹城市| 昌乐县| 湛江市| 南华县| 弥渡县| 思茅市| 文化| 荆门市| 秀山| 买车| 合作市| 永吉县| 汪清县|