java8多次检查可选的空值
如何用java8在一行中编写这个java8多次检查可选的空值,java,java-8,optional,Java,Java 8,Optional,如何用java8在一行中编写这个 if (Optional.ofNullable(mapOfIntAndListOfObjects.get(spn)).isPresent()) { Date paydate = Optional.ofNullable(mapOfIntAndListOfObjects.get(spn).stream().findFirst()).get().orElse(new MyObject()).getPayDate(); logger.info("payd
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;
你似乎真的不需要把它们包装成可选的
Date payDate = mapOfIntAndListOfObjects.getOrDefault(spn, Collections.emptyList())
.stream()
.findFirst()
.orElse(new MyObject())
.getPayDate();
logger.info("paydate {} ", paydate);
return payDate;
您似乎真的不需要将它们包装成可选的。尝试以下方法:
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
完全按照预期使用可选功能。ie在任何地方都不需要默认列表/值,除非选择在未找到任何内容时返回的内容。尝试以下操作:
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
完全按照预期使用可选功能。ie任何地方都不需要默认列表/值,只需要选择在找不到任何内容时返回的内容。Perfect getOrDefaultspn,new ArrayList这就是我要找的:不需要分配新的ArrayList;使用getOrDefaultspn,集合。emptyList@Holger事实上,假设我的答案是正确的,就不需要使用任何一个;使用getOrDefaultspn,集合。emptyList@Holger实际上,假设我的答案是正确的,就不需要使用这两种方法。您应该只使用Optional作为方法的返回类型。使用Optional替换if-else语句会滥用意图,降低代码的可读性,并添加完全不必要的对象分配。您应该只将Optional用作方法的返回类型。使用Optional替换if-else语句会滥用意图,降低代码的可读性,并添加完全不必要的对象分配。接受2个参数。接受2个参数。