私は以下のソースを読んでいましたが、なぜ地球上でフラットマップの方法を使うのだろうと思っていました。私がそれを見ると、最初のヌルで終了し、他のものをチェックするのを煩わしくなく、ラッパーで素敵にうまくフィットする、if文を介した単純なヌルチェックよりも多くのオブジェクトがインスタンス化されます。単純なヌルチェックで(フラット)マップを使用するメリットはありますか?
私はそれを見るようにチェックが速い場合+より多くのメモリ(私は通常のみ実行するコードの多くのために2〜3ミリ秒を持っているようにスピードがすべてであれば、私にとって本当に重要です)
安全「(フラット)マップ」をオプションで使用する利点は何ですか?なぜ私はそれに切り替えることを検討する必要がありますか? http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/あなたが可能NullPointerExceptionsがすることを防止するために、複数のヌルチェックを追加する必要があり、外側のインスタンスの内側の文字列fooのを解決するために
class Outer {
Nested nested;
}
class Nested {
Inner inner;
}
class Inner {
String foo;
}
から
:
Outer outer = new Outer();
if (outer != null && outer.nested != null && outer.nested.inner != null) {
System.out.println(outer.nested.inner.foo);
}
オプションのフラットを利用すると同じ動作が得られます地図の操作:
Optional.of(new Outer())
.flatMap(o -> Optional.ofNullable(o.nested))
.flatMap(n -> Optional.ofNullable(n.inner))
.flatMap(i -> Optional.ofNullable(i.foo))
.ifPresent(System.out::println);
私はhttp://stackoverflow.com/questions/35337020/optional-ofnullable-and-method-chainingを使用することになり、つまりはない 'flatMap'なく、' map' ... – Tunaki
それ後者は 'inner.foo'もチェックするようです。それ以外に、私はそのイディオムを使用しないでしょう - それは実際に何が起こっているのか複雑すぎます。しかし、私はそれが意見の問題だと思います。 – Mena
私は、スピードが本当に私にとって重要なので、私は切替えを検討すべき理由にもっと興味があります。コードスタイルを守らない。私が気づいていないなどの利点はありますか?私は15年の経験を "古風"のやり方でしていますが、ラムダのものを探求し始めています。 – Tschallacka