万一Optional.ofNullable()はnullチェックのために使用されますか?

リンゴジュース :

これはヌル・チェックが望ましいのですか?

Optional.ofNullable(port).ifPresent(settings::setPort);

若しくは

if (port != null) {
   settings.setPort(port);
}
スチュアート・マークス:

Javaでは、Optional値は任意の参照型の値と、有無を示すビットの融合物であるTか、プリミティブintlongまたはdouble

メソッドから値を返すときの方法は、単一の戻り値を持っているとして、これらを融合することは、特に便利です。それは以下のような特別な値を使用することがしばしば必要ですnull参照型の場合には、-1の場合にはint「無価値」の場合を示すセンチネルとして、。使用してOptional戻り値としては、誤って実際の戻り値としてセンチネル値を誤用し、発信者の問題を回避します。

このコードの、ラインなどを考えます

Optional.ofNullable(port).ifPresent(settings::setPort);

それはラインの最初の部分に存在する/存在しないビットとの値を融合することで奇妙であり、その直後のラインの第二の部分にそれらを分離します。かどうかをチェック:これは最終的にはかなり単純な作業です何が複雑にport非nullで、条件付きでいくつかのアクションを実行します。代替コードスニペット:

if (port != null) {
    settings.setPort(port);
}

はっきりまさにそれが何を表現しています。

これは、if文は、より多くの垂直方向のスペースを取ることは事実だOptionalチェーン。Optionalチェーンは密度が高いが、それは理解することは難しくもあります:貧しいトレードオフを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=178029&siteId=1