簡體   English   中英

如何檢查Java 8 Optional是否存在時如何返回值?

[英]How can I return a value while checking if a Java 8 Optional is present?

如何返回值但確保檢查.get()是否有效?

假設date是一個Optional<String>

methodThatTakesStringParam(date.ifPresent(s->s.get().replace("-", ""))) );  

如果我只是使用它而且.get被執行它會拋出它不存在!

methodThatTakesStringParam( date.get().replace("-", "") );  

我該如何處理? 我看到的所有例子都是這樣的

date.ifPresent(System.out.println("showing that you can print to io is useless to me =)") 

但我希望在這種情況下返回一個字符串 - 如果.ifPresent()為false,則為空字符串。

這聽起來像你想要的是:

methodThatTakesStringParam(date.map(s->s.replace("-", ""))).orElse(""));

(請參閱Javadoc for Optional<U>.map(Function<? super T,? extends U>)date.map(s->s.replace("-", ""))大致相當於date.isPresent() ? Optional.of(date.get().replace("-", "")) : Optional.empty() 。)


編輯添加:也就是說,在這種特定情況下,編寫它可能更簡單:

methodThatTakesStringParam(date.orElse("").replace("-",""));

因為"".replace("-","")無論如何都給出了""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM