java - 有没有办法将 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 上打印消息相结合?
请注意,这与这个问题不同,因为我在 value is present 的情况下进行了额外的转换。
解决方案
正如@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);
}
}
推荐阅读
- python - 跨两个表搜索数据框并替换另一列的值
- python - 根据 Pandas 或 Numpy 中的列值复制行
- r - 有没有办法将 R 链接到 Excel 的多个实例?
- victory-charts - 如何在 Victory (Native) Chart touch 上获得插值 X 值?
- php - Xdebug 尝试连接到错误的地址(Xdebug、PHP、Docker、VSCode、WSL2)
- multithreading - 来自其他线程的休眠执行查询卡住
- php - DataTables 隐藏数据源
- javascript - 如何防止发送 http 请求,直到 perious 完成?
- r - 如何对 PredictionClust/Prediction/R6 对象进行子集化
- tensorboard - 已删除日志文件夹,但 TensorBoard 仍显示所有已删除的运行