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。
我们怎么做?
答案 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)