[英]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.