[英]How can I return a boolean value with Optional's ifPresentOrElse?
我已經有一段時間沒有與 Optional 聯系了,但我有一個問題。
如何使用 Optional 轉換下面的 if else 語句? 由於 ifPresentOrElse 沒有返回任何內容,因此它似乎無法返回 true 或 false。
有什么辦法嗎? 或者像以前一樣使用 if else 語句是否正確?
// Using if else statement
if (obj != null) {
// someting to do
return true;
} else {
// someting to do
return false;
}
// Using Optional
Optional.ofNullable(obj)
.ifPresentOrElse(
val -> {
// if obj is not null
// someting to do
// return true
}
, () -> {
// if obj is null
// someting to do
// return false
}
);
如果你得到一個Optional
,就做
return optional.isPresent();
否則沒有理由使用Optional
:
return obj != null;
如果你還想要副作用,你可以這樣做:
public static void main(String[] args) {
Optional<String> present = Optional.ofNullable("Data");
Optional<String> absent = Optional.empty();
System.out.printf("Value was %s\n", doSomething(present)? "present" : "absent");
System.out.printf("Value was %s\n", doSomething(absent)? "present" : "absent");
}
public static boolean doSomething(Optional<String> opt)
{
opt.ifPresentOrElse(
v -> { System.out.printf("value is '%s'\n",v); },
()-> { System.out.println("value is absent"); }
);
return opt.isPresent();
}
我認為您正在嘗試在無效檢查后執行一些代碼。 你可以簡單地做,`
Optional.ofNullable(obj)
.map(o -> o.doOnNotNull(o))
.orElseGet(() -> doOnNull())
編輯:如果您只想進行無效檢查並返回boolean
那么您可以簡單地使用Optional.ifPresent()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.