【技術累積】【點】【java】【9】Optional

基礎概念

  • java8引入的,java9有增強
  • Google公司出品
  • 旨在更好的處理NullPointException

建立Optional實例和基礎使用

Optional op1 = Optional.ofNullable(entity);
Optional op2 = Optional.of(entity);
Optional op3 = Optional.empty();

三種建立方式,要求不能爲空、均可以、empty類型的;html

基本使用:java

op1.get(); //拿到其中的元素
op1.isPresent(); //判斷其中非空

既然是對付空指針的,就要有判空的能力。學習

其餘還有url

orElse()
orElseGet()
orElseThrow()
filter()
map()
flatMap()
ifPresent()

具體的參考下面博客連接吧,本身用用就熟悉了,況且從字面也能猜個7788spa

更加正確的使用方式

一句話:正確場景+鏈式調用.net

直白的講, 當咱們還在以以下幾種方式使用 Optional 時, 就得開始檢視本身了指針

  • 調用 isPresent() 方法時
  • 調用 get() 方法時
  • Optional 類型做爲類/實例屬性時
  • Optional 類型做爲方法參數時

給出逐漸變化的例子以下:code

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;
}

public static String getName(User u) {
    return Optional.ofNullable(u)
                    .map(user->user.name)
                    .orElse("Unknown");
}

因此,適用場景也比較明顯了,我以爲有兩種:htm

  • 多個null判斷的,多層嵌套的;
  • 單一null判斷的,迅速執行的;

參考博客

相關文章
相關標籤/搜索