有没有办法将返回转换值的 Java8 Optional 与在 null 上打印消息结合起来?



我从这段代码开始:

String startingValue = getMyValue();
List<String finishingValue = new ArrayList;
if (startingValue != null) {
finishingValue = Arrays.asList(startingValue.split());
} else {
System.out.println("Value was null");
}

我想使用 Java 8 选项将其转换为如下所示的内容:

Optional<String> startingOptional = getMyOptional();
List finishingValue =
startingOptional
.map(value -> Arrays.asList(value.split(",")))
.orElseGet(() -> {
System.out.println("value not found"); 
return "";
});

现在我可以做到这一点 - 但它并没有真正让它变得更简单。

Optional<String> startingValue = getMyValue();
String finishingValue = startingValue
.orElseGet(() -> {
System.out.println("value not found");
return "";
});
List<String> finishingValueList = new ArrayList();
if (startingValue.isPresent()) {
finishingValueArray = startingValue.get().split(",");
finishingValueList = Arrays.asList(finishingValueArray);
}

我的问题是:有没有办法将返回值的 Java8 Optional 与在 null 上打印消息结合起来?

请注意,这与此问题不同,因为我正在对当前值的情况进行额外的转换。

正如@Deadpool所建议的那样(好名字!

import java.util.*;
class Playground {
public static void main(String[ ] args) {
Optional<String> startingOptional = Optional.ofNullable(null);
List<String> finishingValue =
startingOptional
.map(value -> Arrays.asList(value.split(",")))
.orElseGet(() -> {
System.out.println("value not found"); 
return new ArrayList<String>();
});
System.out.println("finishingValue: " + finishingValue);
}
}

我希望这对你有用

String startingValue = getMyValue();
return Optional.ofNullable(startingValue)
.map(value ->Arrays.asList(startingValue.split(",")))
.orElseGet(()->{
System.out.println("Value was null");
return null;
}); 

最新更新