6

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

上記のコードを検討してください。オブジェクトには、getter メソッドでアクセスできる subSubProperty を持つ subProperty を持つプロパティがあります。

次のようなことを実現するために、Java で何ができるでしょうか。

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

org.apache.commons.lang3.ObjectUtils.defaultIfNullはこのようなものを持っています。しかし、このメソッドの問題は、プロパティとサブプロパティが null でない場合にのみ機能することです。プロパティとサブプロパティが null の場合でも、サブサブプロパティまたはデフォルトサブサブプロパティを取得する方法が必要です。

どうすればこれを行うことができますか?

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 に答える