2つのコード例を取り上げます。
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
私の知る限り、最も明らかな違いは、オプションでは追加のオブジェクトを作成する必要があるということです。
ただし、多くの人がオプションを急速に採用し始めています。オプションを使用する場合とnullチェックを使用する場合の利点は何ですか?
if
文があるすっごく過去十年間、誰もが今モナドの抽象化とラムダを使用しています。
if(x.isPresent) fails_on_null(x.get)
あなたが型システムを終了し、条件と関数呼び出しの間の(明らかに短い)距離でコードが「頭の中で」壊れないという保証を維持する必要があるということです。でoptional.ifPresent(fails_on_null)
型システムあなたのためにこれを保証するもので、あなたが心配する必要はありません。
Optional.ifPresent
(およびその他のさまざまなJava構成体)の主な欠点は、最終変数のみを効果的に変更でき、チェック済み例外をスローできないことです。ifPresent
残念ながら、これはしばしば回避するのに十分な理由です。