ホームページ >Java >&#&チュートリアル >## オプションのチェーンは、連鎖された「Get」呼び出しでの NullPointerExceptions を排除するための鍵ですか?

## オプションのチェーンは、連鎖された「Get」呼び出しでの NullPointerExceptions を排除するための鍵ですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-26 02:29:02731ブラウズ

## Are Optional Chains the Key to Eliminating NullPointerExceptions in Chained

Null が発生しやすい "Get" 呼び出しのチェーンを安全にナビゲートする

複雑なコードベースでは、複数の "get" 呼び出しの連鎖が温床になる可能性がありますNullPointerException の場合。潜在的な null 値を防ぐために、開発者は中間オブジェクトごとに詳細な null チェックを行うことがよくあります。

しかし、そのようなシナリオを処理するより洗練された効率的な方法はありますか?

オプションのチェーン

Java 8 の Optional クラスには、オプション チェーンと呼ばれる洗練されたソリューションがあります。オプションのラッピングを使用すると、Optional を返すことで null を適切に処理できます。

オプションのチェーンを使用すると、一連の get 呼び出しをシームレスに実行し、それぞれをオプションの値にマッピングできます。 Null チェックは内部で処理され、前の操作が null 以外の値を返した場合にのみ後続の操作が実行されるようにします。

たとえば、次の「get」呼び出しのチェーンを考えてみましょう:

house。 getFloor(0).getWall(WEST).getDoor().getDoorknob();

NullPointerExceptions を回避するには、次の null チェックを使用できます。

if (house != null && house.getFloor(0) != null && house.getFloor(0).getWall(WEST) != null && house.getFloor(0).getWall(WEST).getDoor() != null) ...

ただし、オプションのチェーンを使用します。これを次のように単純化できます:

Optional.ofNullable(house)
    .map(h -> h.getFloor(0))
    .map(floor -> floor.getWall(WEST))
    .map(wall -> wall.getDoor())
    .map(door -> door.getDoorknob());

使用例

例を使用してオプションのチェーンの威力を説明しましょう:

System.out.println("----- Not Initialized! -----");

Optional.ofNullable(new Outer())
    ... // Omitted chain of optional maps
    .ifPresent(foo -> System.out.println("foo: " + foo)); //no print

System.out.println("----- Let's Initialize! -----");

Optional.ofNullable(new OuterInit())
    ... // Omitted chain of optional maps
    .ifPresent(foo -> System.out.println("foo: " + foo)); //will print!

この例では、オブジェクトが初期化されると、オプションのチェーンが null を適切に処理し、結果として印刷が成功します。オプションのチェーンがなければ、NullPointerException が発生します。

オプションのチェーンは、null の処理を​​簡素化するだけでなく、コードの可読性と保守性も向上します。 Optional を活用すると、「get」呼び出しのチェーンを安全にナビゲートでき、明示的な null チェックの負担が軽減され、コードベース全体の堅牢性が強化されます。

以上が## オプションのチェーンは、連鎖された「Get」呼び出しでの NullPointerExceptions を排除するための鍵ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。