戻り値の型としてのみ意図された役割にもかかわらず、メソッドの引数としての Optional の使用については議論が行われています。この慣行を回避するための議論を見てみましょう。
オプションのパラメーターを渡すと、メソッド内で条件付きロジックが発生し、コードが複雑になり、保守が困難になる可能性があります。次の例を考えてみましょう。
public int calculateSomething(Optional<String> p1, Optional<BigDecimal> p2) { if (p1.isPresent() && p2.isPresent()) { return // ... logic with both values present } else if (p1.isPresent()) { return // ... logic with only p1 present } else if (p2.isPresent()) { return // ... logic with only p2 present } else { return // ... logic with both values absent } }
Optional で null 許容パラメータをラップすると、追加の抽象化層が追加されるため、不要な実行時オーバーヘッドが発生します。比較すると、Null 許容パラメーターを直接使用すると、必要なオーバーヘッドが少なくなります。
オプションを使用すると、Null 許容パラメーターと比較して追加のコストが発生します。 Optional ラッパーの存在には追加のチェックと操作が必要であり、特にパフォーマンスが重要なアプリケーションでは、パフォーマンスに影響を与える可能性があります。
ただし、null を直接渡すことは許可されていません。オプションのパラメーターを使用しても、誰かが null を含む Optional を渡すリスクがまだあります。これにより、予期しない動作や潜在的な NullPointerExceptions が発生する可能性があります。
メソッドの引数として Optional を渡すと、条件付きロジック、不必要なラッピング、パフォーマンスへの影響、および次のようなリスクが発生する可能性があります。 null 入力は一般に望ましくありません。メソッド入力の場合、null 許容パラメーターは、よりクリーンで効率的な代替手段となります。このガイドラインに従うことで、開発者はコードの可読性、保守性、パフォーマンスを向上させることができます。
以上がJava 8 メソッドではオプションの引数を避けるべきですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。