java - 如何以更好的方式用可选方式重写空检查
问题描述
我有一小段代码。我想用更少的嵌套检查以更好的方式编写它。我怎样才能实现它?
Item item = itemResponse.getItem();
Optional<Item> optionalItem = Optional.ofNullable(item);
if (optionalItem.isPresent()) {
List<NameValue> listValues = item.getValues();
Optional<List<NameValue>> optionalListValues = Optional.ofNullable(listValues);
if (optionalListValues.isPresent()) {
System.out.println(listValues);
}
}
有什么简洁的方法可以使用 Java 8 重写上面的代码吗?
解决方案
您可以使itemResponse.getItem()
类返回Optional<Item>
并使用链式mapOptional
方法,该方法仅在具有值时才会执行,如果map
方法返回非 null 值,则仅ifPresent(Consumer consumer)
执行final
Optional<Item> item = itemResponse.getItem()
item.map(item::getValues)
.ifPresent(System.out::println);
推荐阅读
- selenium - 如何验证在 appium 移动自动化中打开的新 Web 窗口
- java - Google Play Console / Proguard:崩溃报告的行与我的代码不对应
- python - 在 cnn 中为所有预测获得相同的结果
- java - 在 Tomcat 上启动 Jenkins 时遇到一个问题(http://localhost:8080/jenkins/)
- python - Django:需要在登录后使用来自数据库重定向的信息进行动态登录重定向,使用内置登录
- python - 为三个项目生成固定值以在而不是 randrange 之间随机播放
- bash - 如何将默认 python 解释器设置为 Anaconda2 路径,而不是 WSL 中的 usr/bin/ 默认值
- python - 如何通过python填充文本区域并选择选项(选择标签)并点击提交(输入标签)?
- jquery - 如何阻止点击事件创建多个元素?
- javascript - 如何在反应中使用leader-line(一个外部javascript库)?