少なくとも例外クラスのコンテキストで、引数のないコンストラクターの実際の使用例を理解するのを手伝ってくれる人はいますか?
編集:
ほとんどの人が言ったように、「例外クラスが自明であるコンテキストで役立ちます。つまりNullPonterException
、InterruptedException
.」このユースケースとは別に、考えられることは何でもあります。
一部の例外は自明であり、それらのスタック トレースだけで理解できます。NullPointerException
は一例です。
一般に、デフォルト値でオブジェクトを作成する場合は、デフォルト コンストラクターが使用されると見なされます。デフォルトのコンストラクターと例外に関しては、Paul Bellora からの良い回答が既にあります。これには完全に同意しますが、使用することはお勧めしません。その理由は、プログラマーとして、ユーザーが入力またはシステムとの対話を強化できるように、ユーザーが間違ったことをユーザーに通知する責任があるためです。ユーザーに「NullPointerException」を通知するダイアログを表示するだけで、Hello World の例としては十分です! カスタム例外クラスを実装する場合、引数のないコンストラクターを提供することはありません。
作成に多くの構成プロパティが必要な複雑なオブジェクトの作成には、デフォルト コンストラクターの利点があることがわかります。オーバーロードされたコンストラクターまたは作成メソッドの洪水を適用すると、非常に混乱する可能性があり、保守も困難です。依存性注入を使用すると、はるかに便利になり、オブジェクトの構成が大幅に簡素化されます。非常に重要な既定のコンストラクターは、保護された既定のコンストラクターです。特に API を提供するためには、外部から新しい操作を使用してオブジェクトを作成できないようにする必要があります。ユーザーは、ファクトリ インスタンスの作成メソッドを使用して API の項目を作成するように制限する必要があります。これは、API の適切な使用を指定する方法です。もちろん、API に引数なしの保護されたコンストラクターを使用するだけではありません。
特別なケースは、オブジェクトの値を定義する作成時刻を持つ java.util.Date クラスです。議論のないコンストラクターの適用例はもっとたくさんあると思いますが、例外と組み合わせたものはおそらく最悪のものです。