private なコンストラクタ
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
Tool t = new Tool();
System.out.println("ok");
}
}
class Tool {
private Tool() {
}
static Tool create() {
return new Tool();
}
}
- A
okと出力される - B 実行時に例外が発生する
- C コンパイルエラーになる
- D 何も出力されない
正解と解説を見る
正解: C
- A: 実行まで進まないので、何も出力されません。
- B: アクセスの誤りはコンパイル時に見つかります。
- C: private なコンストラクタはクラスの外から new できないので、コンパイルエラーです。
- D: 実行まで進まないので、何も出力されません。
ポイント
- private なコンストラクタは、クラスの外から new できません。
- クラスの中 (
create()など) からなら new できます。インスタンスの作り方を制限したいときに使います。