欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何正確使用Optional解決null安全問題

本篇內(nèi)容主要講解“如何正確使用Optional解決null安全問題”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何正確使用Optional解決null安全問題”吧!

創(chuàng)新互聯(lián)建站2013年開創(chuàng)至今,先為雨湖等服務(wù)建站,雨湖等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為雨湖企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

使用Optional,我們就可以把下面這樣的代碼進(jìn)行改寫。

public static String getName(User u) {

    if (u == null)

        return "Unknown";

    return u.name;

}

不過,千萬不要改寫成這副樣子。

public static String getName(User u) {

    Optional<User> user = Optional.ofNullable(u);

    if (!user.isPresent())

        return "Unknown";

    return user.get().name;

}

這樣改寫非但不簡潔,而且其操作還是和第一段代碼一樣。無非就是用isPresent方法來替代u==null。這樣的改寫并不是Optional正確的用法,我們再來改寫一次。

public static String getName(User u) {

    return Optional.ofNullable(u)

                    .map(user->user.name)

                    .orElse("Unknown");

}

這樣才是正確使用Optional的姿勢。那么按照這種思路,我們可以安心的進(jìn)行鏈?zhǔn)秸{(diào)用,而不是一層層判斷了。看一段代碼:

public static String getChampionName(Competition comp) throws IllegalArgumentException {

    if (comp != null) {

        CompResult result = comp.getResult();

        if (result != null) {

            User champion = result.getChampion();

            if (champion != null) {

                return champion.getName();

            }

        }

    }

    throw new IllegalArgumentException("The value of param comp isn't available.");

}

由于種種原因(比如:比賽還沒有產(chǎn)生冠軍、方法的非正常調(diào)用、某個方法的實現(xiàn)里埋藏的大禮包等等),我們并不能開心的一路comp.getResult().getChampion().getName()到底。而其他語言比如kotlin,就提供了在語法層面的操作符加持:comp?.getResult()?.getChampion()?.getName()。所以講道理在Java里我們怎么辦!

讓我們看看經(jīng)過Optional加持過后,這些代碼會變成什么樣子。

public static String getChampionName(Competition comp) throws IllegalArgumentException {

    return Optional.ofNullable(comp)

            .map(c->c.getResult())

            .map(r->r.getChampion())

            .map(u->u.getName())

            .orElseThrow(()->new IllegalArgumentException("The value of param comp isn't available."));

}

這就很舒服了。Optional給了我們一個真正優(yōu)雅的Java風(fēng)格的方法來解決null安全問題。雖然沒有直接提供一個操作符寫起來短,但是代碼看起來依然很爽很舒服。更何況?.這樣的語法好不好看還見仁見智呢。

還有很多不錯的使用姿勢,比如為空則不打印可以這么寫:

string.ifPresent(System.out::println);

Optional的魅力還不止于此,Optional還有一些神奇的用法,比如Optional可以用來檢驗參數(shù)的合法性。

public void setName(String name) throws IllegalArgumentException {

    this.name = Optional.ofNullable(name).filter(User::isNameValid)

                        .orElseThrow(()->new IllegalArgumentException("Invalid username."));

}

這樣寫參數(shù)合法性檢測,應(yīng)該足夠優(yōu)雅了吧。

到此,相信大家對“如何正確使用Optional解決null安全問題”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

標(biāo)題名稱:如何正確使用Optional解決null安全問題
分享路徑:http://aaarwkj.com/article8/pcdhop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈做網(wǎng)站、用戶體驗、定制開發(fā)品牌網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
91午夜福利国产在线观看 | 国产区av中文字幕在线观看| 天美传媒剧国产在线观看| 成人深夜福利视频观看| av在线播放网址网站| 91嫩草国产在线观看| 青青草日韩欧美在线观看| 老色鬼久久亚洲av综合| 午夜日韩综合激情视频在线观看 | 国产农村熟妇av国语对白| av成人综合在线资源站| 男女做爰高清无遮挡免费| 国产丝袜美腿在线观看| 丁香婷婷激情五月天综合| 九九热精品在线观看视频| 亚洲av免费一区二区三区| 日本中文字幕免费一区| 色综合色狠狠天天综合色| 免费国产成人高清在线视频| 亚洲天堂av成人在线观看| 人妻一区二区三区久久| 海外成人永久免费视频| 国产精品自拍av一区二区| 强乱人妻中文字幕日本| 亚洲日本va午夜中文字幕一区 | avav男人天堂亚洲天堂| 强乱人妻中文字幕日本| 亚洲欧美日韩一区中文字幕| 朋友的尤物人妻中文字幕| 韩国午夜福利视频网站| 国内一级片内射视频播放| av成熟一区二区三区| 91内射视频在线播放| 校园春色亚洲一区二区| 美女露脸口爆吞精视频| 丰满少妇亚洲中文字幕| 蜜臀av成人精品蜜臀av| 亚洲午夜精品久久久天堂| 999久久免费精品国产| 91好色视频在线观看| 欧美午夜福利在线视频|