如何在Java中编写智能合并代码?

时间:2015-04-24 12:04:13

标签: java nullpointerexception coalesce null-coalescing

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为null。

我们怎么做?

1 个答案:

答案 0 :(得分:10)

您可以在Java 8中使用Optional。

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

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