使用Optional对象字段返回null或new对象

ham*_*est 1 java lambda optional java-8

我们有一种方法,其中我们接收一个Optional<SomeType>对象.如果包含的SomeType对象不为null,那么我们必须SomeOtherType使用对象的字段初始化SomeType对象并返回该新对象; 否则我们必须返回null

我们找到了多个不同的解决方案,我们用两个语句执行此任务,首先检索可选对象,然后再创建另一个类型对象,例如

private SomeOtherType ourMethod() {
  SomeType someObject = getOptionalSomeTypeFromSomeWhere().orElse(null);
  return someObject != null ? new SomeOtherType(someObject.getField1(), someObject.getField2(), ...) : null;
}
Run Code Online (Sandbox Code Playgroud)

有可能用一个陈述来涵盖这个吗?到目前为止,我们无法进行空检查,访问字段,创建新对象等

基本上这个问题的一个更复杂的情况:获取可选对象的字段或返回null

And*_*ner 8

用途Optional.map:

return getOptionalSomeTypeFromSomeWhere()
    .map(someObject -> new SomeOtherType(someObject.getField1(), someObject.getField2(), ...)
    .orElse(null);
Run Code Online (Sandbox Code Playgroud)