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

如何正確使用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一区| 男女做爰高清免费视频| 欧美日韩在线高清一区二区| 日韩成人一级片在线观看| 少妇人妻偷人精品系列| 国产手机在线91精品观看| 欧美日韩亚洲中文综合网| 97在线观看免费公开| 99国产精品欲av麻豆在线观看| 激情内射日本一区二区三区| 婷婷激情五月国产丝袜| 国产传媒在线观看网站| 成人亚洲精品一区二区三区| 激情图区亚洲一区二区| 国产精品果亚洲av无人区一区| 亚洲欧美日韩在线第三页| 日本黄色大波少妇网站| 国产亚洲欧美另类网爆| 97成人在线视频免费播放| 国产有码日产一区在线观看| 情侣自拍偷拍亚洲天堂区| 麻豆乱淫一区二区三爱免费| 国产熟乱老女人露脸视频| 国产精品av在线网站| 放荡精品少妇一区二区三区| 亚洲天堂av现在观看| 国产成人综合久久三区北岛玲| 日韩人妻一区中文字幕| 久久偷拍女生厕所尿尿| 老汉av免费在线观看| 日韩国产精品激情一区| 国产美女口爆吞精久久| 久久人妻少妇嫩草av蜜桃综合| 国产成人精品亚洲日本片| 久久亚洲综合精品少妇| 九九热超在线视频精品| 日本一区二区三区福利视频| 亚洲精品一区二区三区不卡| 国产日韩欧美精品激情| av大全网站免费一区二区| 国产三级系列在线观看|