オプションを使用した「Get」呼び出しのチェーンの安全なナビゲート
Java プログラミングでは、「get」呼び出しのチェーンに遭遇することがよくあります。のような以下:
house.getFloor(0).getWall(WEST).getDoor().getDoorknob();
潜在的な NullPointerExceptions を回避するために、開発者は多くの場合、詳細な null チェックに頼ります:
if (house != null &&& house.getFloor(0) &&& house.getFloor(0).getWall(WEST) != null &&& house.getFloor(0).getWall(WEST).getDoor() != null) ...
このアプローチは、次の場合にはさらに扱いにくくなります。通話のチェーンが長くなります。もっと洗練された解決策はありますか?
はい、Java 8 の Optional 型の導入により、一連の取得での null の処理が大幅に簡単になりました。
Null 処理に Optional を使用する
Optional は、オプションの値を表すラッパー クラスです。 null 以外の値を含めることも、空にすることもできます。
get のチェーンで null 処理に Optional を使用するには、map() メソッドでそのチェーン機能を利用できます。
検討してください。次の例:
Optional.ofNullable(house) .map(house -> house.getFloor(0)) .map(floorZero -> floorZero.getWall(WEST)) .map(wallWest -> wallWest.getDoor()) .map(door -> wallWest.getDoor());
このコードは、対応する get 呼び出しの結果をそれぞれ表す Optional オブジェクトのチェーンを作成します。
使用の利点オプション
オプションを使用すると、次のような利点があります:
結論
デメテルの法則に違反することを避けられない場合は、Optional を使用するのが最適です。 「get」呼び出しのチェーンを安全にナビゲートするために強く推奨されるアプローチです。これは、null を処理する洗練された効率的な方法を提供し、コードの堅牢性と信頼性を保証します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3