Guava のOptionalクラスとその正当化を見ていましたが、null であってはならない値を表すときに、同様のクラスがフェイルファストに役立つかどうか疑問に思いました。このアイデアについての議論が見つからないので、ここで質問したいと思いました。
私の最初の試みは、Guava で使用されているスタイルにとどまりMandatory<T>
、 static factory を公開しようとしましたof(T t)
。NullPointerException
このメソッドは、null 引数で呼び出された場合にスローされます。
特に興味があるのは、null 処理に関するインターフェイス メソッドのセマンティクスを突き止めることです。null 引数を受け入れるかどうかは、クライアント コードをそれに応じて設計し、前提条件チェック ロジックの重複を回避できるように、インターフェイスで指定できる設計上の決定であると思います。そのため、このクラスを使用するインターフェースには、次のようなメソッドが含まれる場合があります。
fire(Mandatory<Employee> employee);
そしてクライアントが電話するかもしれません
fire(Mandatory.of(unfortunateEmployee));
そのようなマークされたメソッド引数がnullであってはならないことが絶対に重要である場合、呼び出しの前にさらにチェックをフックするためにアスペクトなどを使用してMandatory型を見つけるのは非常に簡単だと思います。
などの注釈ベースのアプローチも検討しましfire(@NotNull Employee employee)
たが、私が見た実装では、バリデーターの追加の配線が必要です。
では、質問は... このアイデアはすでにどこかに存在しますか? そうでない場合、それを弱体化させる明らかな何かを見逃していませんか? またはこれを達成するためのより良いアイデアはありますか?