java - 使用可选对象字段返回空对象或新对象

标签 java lambda java-8 option-type

我们有一个方法,其中我们收到一个 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/

相关文章:

Java 8 Lambda 将函数或变量作为参数传递

c++ - 当我使用 [=] 捕获(使用 Lambda 类)时,为什么变量会变为 'const'?

java - 如何将 Streams Prev 元素结果传递给下一个

java - 如何使冰居中 :confirmationPanel within a modal ice:panelPopup (ICEfaces)?

java - 像 facebook 一样的元素列表

java - 如何有效地对 int 数组进行排序

java - Eclipse 内存分析器 - 尝试获取堆转储时出错

node.js - 如何在AWS Elasticache中测试Redis的性能?

java - 数字溢出抛出异常

java - 如何在不创建大字符串的情况下打印由分隔符分隔的集合元素?