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

如何正確使用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://www.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è)計
亚洲小视频免费在线观看| 久久精品国产免费夜夜嗨| 成人永久免费播放平台| 九九蜜桃视频香蕉视频| 美女被男人操国产精品| 国产精品成人免费久久黄| 中文字幕五月久久婷热| 男女做爰高清免费视频| 久久精品国产亚洲av制服| 精品欧美国产日韩在线观看| 色综合久久综合香梨网| 91麻豆精品国产综合久久久| 国产91高清视频在线观看| 天天日天天天干夜夜操| 中文字幕你懂的在线观看| 日韩高清一级黄色大片网站 | 欧美日韩精品久久影院| 久久精品亚洲熟女av蜜臀| 成人国产精品三上悠亚久久| 日韩区一区二在线视频| 日本视频免费一区二区| 性知音国产精品粉色视频| 免费啪啪视频一区二区| 西西美女掰开阴让你看| 性生活视性生活大片日本| 成人av在线天堂一区二区三区| 亚洲天堂中文字幕麻豆| 成年人黄色免费网站在线观看| 1区2区3区精品视频| 高质量的性生活在线观看| 精品亚洲天堂一区二区三区| 国产一区二区三区精品女同| 国产精品—色哟哟视频| 日本精品中文字幕人妻| 亚洲国产精品二区三区| 日韩高清不卡在线视频| 色婷婷精品二区久久蜜臀av| 久久精品无人区乱码一区二区| 精品人妻中文字幕在线| 亚洲国产精品一区二区三| 欧美一级特黄大片做受农村|