簡體   English   中英

如何在沒有 if 條件的情況下使用 Java Optional 添加不同的邏輯

[英]How to use Java Optional without if condition to add different logic

我想對 Optional 值應用不同的邏輯,如下所示

Optional<String> alarm = getAlarm();
if (alarm.isPresent()) {
    testAutoStopAndRollback(alarm.get());
} else {
    testWithoutAutoStopAndRollback();
}

有沒有更簡潔的方法來實現相同的邏輯? 我知道我可以將一半的邏輯移到ifPresent()

alarm.ifPresent(name -> testAutoStopAndRollback(name));

剩下的部分我該怎么做?

為了澄清這個問題,我的代碼堅持使用 Java 8,所以我將無法在 Java 9 中使用ifPresentOrElse

我覺得你的第一個例子已經很好了。 除非您可以升級到 Java 9,否則Optional不包含類似 ifPresentOrElse 的方法。 只要堅持編程的第一條規則:“如果它有效,就不要碰它!” :)

如果你想創建更多的類來稍微清理你的代碼,看看這個問題

一種方法可以通過從testAutoStopAndRollbacktestWithoutAutoStopAndRollback返回一些值來testAutoStopAndRollback ,例如我會返回布爾值來識別值是否存在

testAutoStopAndRollback(val) ---> returns true
testWithoutAutoStopAndRollback ---> returns false

然后使用Optional

boolean value = alarm.map(this::testAutoStopAndRollback).orElseGet(this::testWithoutAutoStopAndRollback);

暫無
暫無

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

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