クラスインスタンスが作成されるたびに、インスタンスのinitブロックが実行されることは私の理解である。これをテストしようとすると、最初の2つのインスタンスに対してインスタンスのinitブロックが実行されましたが、3番目のインスタンスは実行されませんでした。ここでJava - 新しいインスタンスが新しいインスタンスInitブロックを実行していない
コードです:
class ModuleInit {
ModuleInit (int x) { System.out.println("1-arg const"); }
ModuleInit() { System.out.println("No-arg const"); }
static { System.out.println("First static init"); }
{ System.out.println("1st instance init"); }
{ System.out.println("2nd instance init"); }
static { System.out.println("2nd static init"); }
public static void main(String[] args)
{
new ModuleInit();
new ModuleInit(8);
}
}
、ここでは出力です:
First static init
2nd static init
1st instance init
2nd instance init
No-arg const
1st instance init
2nd instance init
1-arg const
<---Missing instance init for ModuleInt(int x)?
私は別のインスタンスが存在すべきであることを(ModuleInit(8)
)int型の引数を持つ新しいクラスのインスタンスが作成されたときと思いましたinitブロック実行。誰かがなぜこれがここで起こらないのか説明できますか?
'クラスModuleInit'とコンストラクタ' Module4(int型x) 'は?何かが間違っている。 – Viruzzo