我们有一个方法,其中我们收到一个 Optional<SomeType>
目的。如果包含SomeType
object 不为 null 那么我们必须初始化一个 SomeOtherType
使用 SomeType
字段的对象对象并返回那个新对象;否则我们必须返回 null
我们发现了多种不同的解决方案,我们使用两条语句执行此任务,首先检索可选对象,然后创建其他类型的对象,例如
private SomeOtherType ourMethod() {
SomeType someObject = getOptionalSomeTypeFromSomeWhere().orElse(null);
return someObject != null ? new SomeOtherType(someObject.getField1(), someObject.getField2(), ...) : null;
}
是否可以用一个声明来解决这个问题?到目前为止,我们无法想出将空值检查、访问字段、创建新对象等全部集成在一起
这个问题基本上是一个更复杂的案例:Get field of optional object or return null
最佳答案
使用Optional.map
:
return getOptionalSomeTypeFromSomeWhere()
.map(someObject -> new SomeOtherType(someObject.getField1(), someObject.getField2(), ...)
.orElse(null);
关于java - 使用可选对象字段返回空对象或新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51560840/