Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.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 如果类X中的静态初始值设定项调用Y中的方法,但是Y';的静态初始值设定项调用X中的方法来设置其静态值?_Java_Static Initialization - Fatal编程技术网

Java 如果类X中的静态初始值设定项调用Y中的方法,但是Y';的静态初始值设定项调用X中的方法来设置其静态值?

Java 如果类X中的静态初始值设定项调用Y中的方法,但是Y';的静态初始值设定项调用X中的方法来设置其静态值?,java,static-initialization,Java,Static Initialization,这个问题是在JAVA编程语言书中提出和解释的,但我不清楚如何解释 有人能解释得更清楚些吗 书中的解释是: 编译期间无法可靠地检测到此循环静态初始化,因为 在编译X时,可能不会编写Y的代码。如果循环发生,X的静态初始值设定项将被禁用 仅执行到调用Y的方法的点。当Y依次调用X方法时,则 方法在其余静态初始值设定项尚未执行的情况下运行。X中的任何静态字段都没有 它们执行的初始值设定项仍将有其默认值(false、/u0000)、zero或null,具体取决于 非常简单:如果一个线程由于另一个原因(例如,

这个问题是在JAVA编程语言书中提出和解释的,但我不清楚如何解释

有人能解释得更清楚些吗

书中的解释是:

编译期间无法可靠地检测到此循环静态初始化,因为 在编译X时,可能不会编写Y的代码。如果循环发生,X的静态初始值设定项将被禁用 仅执行到调用Y的方法的点。当Y依次调用X方法时,则 方法在其余静态初始值设定项尚未执行的情况下运行。X中的任何静态字段都没有 它们执行的初始值设定项仍将有其默认值(false、/u0000)、zero或null,具体取决于
非常简单:如果一个线程由于另一个原因(例如,因为类Y使用了它的某些内容)而要求初始化类X,而它已经在初始化类X,那么它只是跳过它。所有静态变量都有其默认值

有关正在发生的事情的精确描述,请参阅。特别是:

如果C的类对象指示当前线程正在对C进行初始化,那么这必须是一个递归的初始化请求。释放信用证并正常完成