Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-新实例未运行新实例初始化块_Java_Instance_Block_Init - Fatal编程技术网

Java-新实例未运行新实例初始化块

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(

我的理解是,每次创建类实例时,实例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("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);
    }
}