91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java8新特性Optional類怎么應用

發布時間:2022-04-06 11:00:50 來源:億速云 閱讀:116 作者:iii 欄目:開發技術

這篇“Java8新特性Optional類怎么應用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java8新特性Optional類怎么應用”文章吧。

    一、序言

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

    二、問題復原

    (一)素材準備

    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;
    }

    相關SetterGetter方法自行添加。

    (二)模擬演示

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

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

    顯而易見,當對象嵌套層次較深時,需要做的邏輯判斷越多,代碼越復雜。

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

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

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

    以上就是關于“Java8新特性Optional類怎么應用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    大方县| 西乡县| 左云县| 梓潼县| 容城县| 长丰县| 张家川| 四会市| 陆丰市| 上饶县| 福鼎市| 容城县| 阿瓦提县| 渑池县| 右玉县| 镇坪县| 海阳市| 平凉市| 阿城市| 镇远县| 精河县| 霍邱县| 南漳县| 湘乡市| 易门县| 成都市| 阿勒泰市| 乌兰浩特市| 寿光市| 阜新| 西安市| 碌曲县| 琼中| 伊宁市| 金川县| 虞城县| 云霄县| 健康| 洛扎县| 池州市| 林周县|