object.getProperty().getSubProperty().getSubSubProperty();
考虑上面的代码。一个对象有一个属性,有一个子属性,有一个子子属性,可以用 getter 方法访问。
我们可以在 Java 中做什么来实现类似的东西:
Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);
org.apache.commons.lang3.ObjectUtils.defaultIfNull
有这样的东西。但是这个方法的问题是它只在 property 和 subProperty 不为 null 时有效。我想要一种获取 subSubProperty 或 defaultSubSubProperty 的方法,即使 property 和 subProperty 为 null。
我们如何做到这一点?
最佳答案
您可以在 Java 8 中使用 Optional。
String s = Optional.ofNullable(object)
.map(Type::getProperty)
.map(Type2::getSubProperty)
.map(Type3::getSubSubProperty)
.orElse(defaultValue);
您还可以使用 orElseGet(Supplier)
或 orElseThrow(Throwable)
关于java - 如何在 Java 中编写智能合并代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847083/