波多野结衣 蜜桃视频,国产在线精品露脸ponn,a v麻豆成人,AV在线免费小电影

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了空檢查與可選的isPresent檢查的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

誰能解釋一下Optional如何幫助我們避免NullPointerException

Optional<String> op = someFunc()
if(op.isPresent()) {
   op.get();
}
String possibleNull = op.get();

此代碼不是也易于NullPointerException嗎?如果是,那么為什么首選此代碼而不是

String op = someFunc()
if(op != null) {
   op.get();
}
String possibleNull = op;

Optional除了幫助我們了解函數是否實際具有返回值這一事實之外,它還有什么可能的好處

推薦答案

假設您要獲取函數返回的字符串,將其轉換為大寫,然后打印出來。如果您有:

String someFunc() { ... }

您可能會想寫:

System.out.println(someFunc().toUpperCase());

當然,如果someFunc返回null,則拋出NullPointerException。相反,假設我們有這樣的情況:

Optional<String> someFunc() { ... }

然后

System.out.println(someFunc().toUpperCase());

不起作用,因為Optional沒有toUpperCase方法。此時–希望如此–您將面臨Optional,這應該會讓您考慮Optional為空的情況。這有助于避免NPE,但可能只是在一定程度上。

現在您可能專注于如何從Optional中獲取值,而您可能忘記了空案例。啊,有一個get方法:

System.out.println(someFunc().get().toUpperCase());

這將帶回與NPE相同的問題,只是例外是NoSuchElementException。因此,如果您在Optional上盲目調用get,這實際上與在引用上調用方法而不檢查它是否為空幾乎是一樣的。

(出于這個原因,Brian Goetz認為Optional.get是Java 8中最大的錯誤。參見他在16分鐘內對Angelika LangerJAX 2015 Fragen und Antworten zu Java 8的采訪。我不確定這是最大的,但這是一個錯誤。人們只是不希望get引發異常。)

如果您經常檢查空引用或空選項,則

Optional<String> os = someFunc();
if (os.isPresent()) {
    System.out.println(os.get().toUpperCase());
}

比舊的好不了多少

String s = someFunc();
if (s != null) {
    System.out.println(s.toUpperCase());
}

真正的優勢在于它是一個庫類,具有相當豐富的API,用于以安全的方式處理空案例。通常可以通過將兩個方法調用鏈接到最初返回Optional的方法來處理可能包含在Optional中的值。例如,我們可以按如下方式重寫上面的示例:

someFunc().map(String::toUpperCase)
          .ifPresent(System.out::println);

這篇關于空檢查與可選的isPresent檢查的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:isPresent 可選 檢查
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定