我的意思不是返回一個 Optional 值,我的意思是對于一個方法:public void someMethod() { Optional<Obj> obj = someService.getObj(); if (obj.isPresent()) { .... } else { log.info(xxxx); return; } xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxx other codes}是否可以用 Optional.ifPresent 方式編寫它?我的意思是,避免使用if isPresent的東西。非常感謝。== 更新:似乎如果JDK9中的PresentOrElse可以做到這一點,但是在JAVA8中有什么辦法做到這一點嗎?我不需要此方法返回任何值,但如果Optable不存在,我想記錄一些東西。
4 回答

慕尼黑的夜晚無繁華
TA貢獻1864條經驗 獲得超6個贊
似乎是Java-9中的用例:ifPresentOrElse
obj.ifPresentOrElse(a -> {...}, () -> {logger.info(xxxx);return; });

米脂
TA貢獻1836條經驗 獲得超3個贊
如果不想在 空時不執(zhí)行任何操作,可以使用 :OptionalifPresent
public void someMethod() {
someService.getObj().ifPresent (v -> {
....
});
}

紅糖糍粑
TA貢獻1815條經驗 獲得超6個贊
只是拋出一個想法,在服務上有一個方法來檢查對象是否存在呢?我認為通常你不想將 Optionals 分散到整個代碼中,我寧愿將其保留在服務中。
上:SomeService
public boolean isObjectPresent() {
return getObj().isPresent();
}
然后
public void someMethod() {
if (someService.isObjectPresent()) {
....
} else {
log.info(xxxx);
return;
}
}
這樣,您就不必在通話中處理,因為您并不真正關心它的價值Optional
注意:另外,我還要補充一點,如果在 if 塊之后沒有代碼,則不需要 return 語句。
添加回答
舉報
0/150
提交
取消