如果类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");
}
}