6

object.getProperty().getSubProperty().getSubSubProperty();

考虑上面的代码。一个对象有一个属性,有一个 subProperty,有一个 subSubProperty,可以用 getter 方法访问。

我们可以在 Java 中做些什么来实现以下目标:

Util.coalesce(object.getProperty().getSubProperty().getSubSubProperty(), defaultSubSubProperty);

org.apache.commons.lang3.ObjectUtils.defaultIfNull有这样的东西。但是这种方法的问题是它只在 property 和 subProperty 不为 null 时才有效。我想要一种获取 subSubProperty 或 defaultSubSubProperty 的方法,即使 property 和 subProperty 为空。

我们应该怎么做?

4

1 回答 1

11

您可以在 Java 8 中使用 Optional。

String s = Optional.ofNullable(object)
                   .map(Type::getProperty)
                   .map(Type2::getSubProperty)
                   .map(Type3::getSubSubProperty)
                   .orElse(defaultValue);

您也可以使用orElseGet(Supplier)orElseThrow(Throwable)

于 2015-04-24T12:06:36.060 回答