2

コンパイラーはどのコンストラクターを呼び出すかわからないため、引数なしのコンストラクターはエラーをスローします。解決策は何ですか?

private Test() throws Exception {
    this(null);//THIS WILL THROW ERROR, I WAN'T TO CALL A SPECIFIC CONSTRUCTOR FROM THE TWO BELOW. HOW TO DO??
}
private Test(InputStream stream) throws Exception {

}



private Test(String fileName) throws Exception {

}
4

2 に答える 2

5

型キャストnull:

private Test() throws Exception {
    this((String)null); // Or of course, this((InputStream)null);
}

Test(String)しかし、または引数Test(InputStream)を使用して呼び出したいと思うのは少し奇妙に思えnullます...

于 2012-04-25T09:03:57.297 に答える
1

愛情を込めて作成されたこれらすべてのコンストラクターが非公開である理由がわかりません。

私はこのようにします:

private Test() throws Exception {
    this(new PrintStream(System.in);
}

private Test(InputStream stream) throws Exception {
    if (stream == null) {
        throw new IllegalArgumentException("input stream cannot be null");
    }   
    // other stuff here.
}    

private Test(String fileName) throws Exception {
    this(new FileInputStream(fileName));
}
于 2012-04-25T09:11:26.130 に答える