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

溫馨提示×

溫馨提示×

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

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

Java 8中java.util.Optional如何使用

發布時間:2021-08-12 17:12:47 來源:億速云 閱讀:179 作者:Leah 欄目:云計算

這期內容當中小編將會給大家帶來有關Java 8中java.util.Optional如何使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


Optional 主要用來判斷是否為空,在Optional之前,我們只要使用StringUtils的工具類來判斷傳入的參數是否為空。現在我們可以使用 Optional 來替代它了。

Java 8中java.util.Optional如何使用

Optional.of(Object object)

Optional.of(Object object):入參object不能為空,否則會拋出空指針異常。它最終調用的是Objects.requireNonNull方法。

1

2

3

4

5

public static <T> T requireNonNull(T obj) {

    if (obj == null)

        throw new NullPointerException();

    return obj;

}

Optional.ofNullable(Object object)

Optional.ofNullable(Object object):入參object可以為空,如果object不為空,就創建一個Optional實例;如果object為空就返回一個static fainal的Option對象,注意這里不會新建Option實例,而是使用一個static final的實例EMPTY,這里比較有意思的是泛型的問題,例如我需要兩個Optional對象,類型分別是String和Integer。

1

2

Optional<String> optionalStr = Optional.ofNullable(null);

Optional<Integer> optionalInt = Optional.ofNullable(null);

類型不同又如何保證返回同一個對象呢?直接看ofNullable的源碼,發現會調用empty方法:

1

2

3

4

5

public static<T> Optional<T> empty() {

    @SuppressWarnings("unchecked")

    Optional<T> t = (Optional<T>) EMPTY;

    return t;

}

原來是通過強制轉換實現的,再看EMPTY對象:

1

private static final Optional<?> EMPTY = new Optional<>();

Optional.empty()

Optional.empty():就是上面分析Optional.ofNullable的時候用到的empty方法,直接返回一個static final的實例EMPTY;

Optional.of()方法的用法有點像斷言,對象為空的時候代表著某種業務上不可接受的異常,需要盡早處理,并且業務拒絕執行,這種場景下可以使用Optional.of;

下面來一起看一個例子。

User 實體類代碼如下:

1

2

3

4

5

6

7

8

9

10

11

public class User {

    private int id;

    private String name;

    private int age;

    public User(int id, String name, int age) {

        this.id = id;

        this.name = name;

        this.age = age;

    }

}

用Optional來避免空異常問題。

1

2

3

4

5

6

public User getStudent(int id){

    User user = null;

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

    return optional.orElse(DEFAULT);

}

orElse方法可以指定一個value為空時的返回對象,如果這個對象需要調用方法才能獲取(例如我們拿不到DEFAULT對象,要通過getDefault()方法才能拿到),這是就需要orElseGet方法來達到目的,如下:

1

2

3

4

5

6

7

8

9

private User getDefault(){

    return DEFAULT;

}

public User getStudent(int id){

    User user = null;

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

    return optional.orElseGet(() -> getDefault());

}

上述就是小編為大家分享的Java 8中java.util.Optional如何使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

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

AI

宽城| 通山县| 高邑县| 新乡县| 长兴县| 鱼台县| 镇原县| 昌邑市| 饶平县| 阳高县| 吴川市| 尚志市| 阳春市| 视频| 文成县| 惠水县| 高安市| 策勒县| 海盐县| 仙桃市| 青神县| 尼勒克县| 古田县| 乐陵市| 怀宁县| 宣城市| 嘉兴市| 辽阳县| 财经| 山东| 阆中市| 汶上县| 德惠市| 庆城县| 京山县| 嫩江县| 马尔康县| 田阳县| 吉林市| 玉溪市| 嘉兴市|