java8 多次检查可选空值
java8 check optional null value more then once
如何在 java8 中将其写在 1 行中?
if (Optional.ofNullable(mapOfIntAndListOfObjects.get(spn)).isPresent()) {
Date paydate = Optional.ofNullable(mapOfIntAndListOfObjects.get(spn).stream().findFirst()).get().orElse(new MyObject()).getPayDate();
logger.info("paydate {} ", paydate);
return paydate;
}
return null;
类似于
Date payDate = mapOfIntAndListOfObjects.getOrDefault(spn, Collections.emptyList())
.stream()
.findFirst()
.orElse(new MyObject())
.getPayDate();
logger.info("paydate {} ", paydate);
return payDate;
您似乎真的不需要将它们包裹在 Optional
周围。
试试这个:
return Optional.ofNullable(mapOfIntAndListOfObjects.getOrDefault(spn))
.map(List::stream)
.map(Stream::findFirst)
.map(MyObject::getPayDate)
.orElse(null); // or whatever default to return in case nothing found
完全按预期使用 Optional
功能。即在任何地方都不需要默认值 lists/values(除了在找不到任何内容时选择 return)。
如何在 java8 中将其写在 1 行中?
if (Optional.ofNullable(mapOfIntAndListOfObjects.get(spn)).isPresent()) {
Date paydate = Optional.ofNullable(mapOfIntAndListOfObjects.get(spn).stream().findFirst()).get().orElse(new MyObject()).getPayDate();
logger.info("paydate {} ", paydate);
return paydate;
}
return null;
类似于
Date payDate = mapOfIntAndListOfObjects.getOrDefault(spn, Collections.emptyList())
.stream()
.findFirst()
.orElse(new MyObject())
.getPayDate();
logger.info("paydate {} ", paydate);
return payDate;
您似乎真的不需要将它们包裹在 Optional
周围。
试试这个:
return Optional.ofNullable(mapOfIntAndListOfObjects.getOrDefault(spn))
.map(List::stream)
.map(Stream::findFirst)
.map(MyObject::getPayDate)
.orElse(null); // or whatever default to return in case nothing found
完全按预期使用 Optional
功能。即在任何地方都不需要默认值 lists/values(除了在找不到任何内容时选择 return)。