Java-新实例未运行新实例初始化块
我的理解是,每次创建类实例时,实例init块都会运行。当我尝试测试这个时,instance init块针对前两个创建的实例运行,而不是第三个实例 代码如下:Java-新实例未运行新实例初始化块,java,instance,block,init,Java,Instance,Block,Init,我的理解是,每次创建类实例时,实例init块都会运行。当我尝试测试这个时,instance init块针对前两个创建的实例运行,而不是第三个实例 代码如下: class ModuleInit { ModuleInit (int x) { System.out.println("1-arg const"); } ModuleInit () { System.out.println("No-arg const"); } static { System.out.println(
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)?
第一个静态初始化
第二静态初始化
第一实例初始化
第二实例初始化
无参数常数
第一实例初始化
第二实例初始化
1-arg常数
实例初始化块作为构造函数中的第一行运行(即,在调用super()
或this()
,无论是隐式的还是声明的),因此它们在构造函数打印其行之前运行:
First static init
2nd static init
1st instance init
2nd instance init
No-arg const
1st instance init <---- They are right here...
2nd instance init <---- They are right here...
1-arg const
class ModuleInit
和构造函数Module4(int x)
?有点不对劲。我明白了,我一定在想他们在追我。谢谢
class Module4 {
Module4 (int x) {
System.out.println("1st instance init");
System.out.println("2nd instance init");
System.out.println("1-arg const");
}
Module4 () {
System.out.println("1st instance init");
System.out.println("2nd instance init");
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);
}
}