機能的なスタイルに:「ヌル?リターンoptObj.isPresent()新しいOBJ2(optObj)」を交換する方法は?

双ビット:

私のIDE(InteliJ)は、私のコードは、「機能的なスタイルで、単一の式で置き換えることができます」と私を指して強調し続けてisPresent()

return timestamp.isPresent() ? new Obj2(timestamp.get()) : null;

timestamp オプションのように初期化されます。

Optional<Date> timestamp = ...

私の仮定は、私が使用する必要があるということですifPresentこのようなtimestamp.ifPresent(Obj2::new)しかし、ifPresent無効であると私は、作成したオブジェクトを返す機会がありません。また、その後返すカントnull私のコードへの解決策はありますか?

Ousmane D .:

あなたは言うで正しいだifPresentリターンは無効とこのケースで、したがって適していません。あなたのIDEを使用すると、簡単に行うことができますことを示唆しています:

timestamp.map(Obj2::new).orElse(null);

これは、「任意の場合のように読み込みtimestamp、現在の状態は、それがに含まれているオブジェクト渡していObj2コンストラクタを、この新しい返すObj2そうでない場合は、インスタンスを(orElse)の戻りnull


別のノートで、IntelliJ IDEAがあなたはそれが示唆されていますコードを生成することができます。

例えば、スクリーンショットの下に与えられました:

ここでは、画像の説明を入力します。

私は単純に「強調表示」の部分をクリックし、「ALT +は、ENTER」を押すと、IntelliJのは、それが機能的なスタイルと条件を置き換える必要があるかどうかを示唆しています。

おすすめ

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