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)。