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

如何正確使用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è)計
中文字幕一区二区中文字幕| 蜜桃视频中文字幕二区三区 | 亚洲精品??一区二区| av天堂资源地址在线观看| 热久久视频这里只有精品| 亚洲天堂av福利在线观看| 亚洲欧美日韩国产在线一区| 日韩精品视频一区二区在线观看| 亚洲欧美国产成人在线| 成人午夜在线免费观看| 亚洲成a人片777777久久| 99久久婷婷免费国产综合精品| 久草手机福利在线观看| 国产精品国产三级国产专播| 久久亚洲中文字幕精品一区四区| 国产精品欧美日韩高清| 欧美亚洲av一区二区三区| 亚洲精品一品区二品区三区| 欧美日韩黄片免费在线观看| 中文字幕人妻少妇美臀| 中文字幕日韩欧美一区在线| 久久夜色一区二区三区| 日韩商清av毛片网站| av中文字幕熟妇人妻少妇| 久久成人激情免费视频| 在线观看永久免费黄色| 欧美亚洲精品一区二区三区| 男人天堂一区二区av| 中文字幕一区二区三区精彩视频| 亚洲精品午夜在线观看| 日本福利一区二区三区| 免费在线观看欧美色妇| 日本免费一区二区三区四区视频| 国产亚洲精品国产福利久久| 2020年最新国产三级网站| 久久久精品免费福利视频| 放荡成熟人妻中文字幕| 精品国产亚洲av剧情| 极品大胸美女被啪啪的高潮 | 日韩爱视频一区二区| 国产在线精彩视频自拍|