如果类X的静态初始化中调用了类Y的静态方法,而类Y的静态初始化块中由调用了类X的静态方法,这?

来源:百度知道 编辑:UC知道 时间:2024/05/06 00:14:05
如果类X的静态初始化中调用了类Y的静态方法,而类Y的静态初始化块中由调用了类X的静态方法,这种情况叫循环静态初始化,请分析这种情况下类X和类Y的初始化过程。

class a {
static void init() {
b.init();
}
}

class b {
static void init() {
a.init();
}
}

这个代码会是死循环。所以请不要这样做。

楼上差矣 哪有自己挖坑自己跳的 看我写法

===============
package test1;

public class A {
static {
B.printB();
}

public static void printA() {
System.out.println("A");
}
}
===================
package test1;

public class B {
static {
A.printA();
}

public static void printB() {
System.out.println("B");
}
}
===============================
package test1;

public class Test {

public static void main(String[] args) throws Exception{
Class.forName("test1.A");
}
}