1

以下のような 3 つのコンストラクターを持つクラスがあるとします。

public class ExampleClass {
    // constructor #1
    public ExampleClass(int a) {
        this(a, "aaa"); // "aaa" is just an arbitrary default for b
    }

    // constructor #2
    public ExampleClass(String b) {
        this(2, b); // 2 is just an arbitrary default for a
    }

    // constructor #3
    public ExampleClass(int a, String b) {
        // a has an arbitrary minimum value of 3
        // b has an arbitrary minimum length of 3
        if (a < 2 || b.length() < 2) {
            throw new IllegalArgumentException("a and b cannot be less than 2");
        }

        // ...
    }
}

この場合、3 つのコンストラクターがあります。3 番目はプライマリ コンストラクターのようなもので、他のコンストラクターは単純にデフォルトを提供するため、両方ではなく 1 つの値のみを指定してクラスを構築できます。JavaDoc を介してそのようなクラスのドキュメントを作成しようとしています。最初または 2 番目のコンストラクターのドキュメントを作成する場合@throws、可能性をドキュメント化するためにタグを使用しIllegalArgumentExceptionますか? IllegalArgumentExceptionそれとも、3 番目のコンストラクターのドキュメントのみのドキュメントを保存する必要がありますか? aその場合、2文字を超えなければならない、または2文字を超えなければならないことを表現する最も適切な方法はb何ですか? IllegalArgumentExceptionで文書化せずに がスローされる可能性があるとどのように述べればよいでしょう@throwsか?

4

2 に答える 2

2

3 つのコンストラクターすべてが例外をスローします(これは経験的に確認できます)。コードのコンシューマーが内部で何が起こっているかを知ることは期待できません (つまり、引数がコンストラクター内でチェックされているか、何らかの方法でチェックされているか)。コンストラクターによって呼び出されます)。したがって、3 つのコンストラクターすべてを文書化する必要があります。

何度も繰り返さないのは良いことですが、常に実用的であるとは限りません。Javadoc では必要な関係を表現できないため、長い手で表現する必要があります。

于 2012-06-29T01:09:16.827 に答える
0

3 つすべてにチェック済み例外とドキュメントを使用するか、1 つを非公開にし、他の 2 つにドキュメントを作成します。

于 2012-06-29T01:07:20.477 に答える