在java中,在创建类的对象之前加载一个类。在程序的整个持续时间内只加载一次类。 发生这种情况时,将初始化静态并执行静态块。 这可以是循环的;在一个类完全初始化之前,我在类iteself中创建了一个类的对象。 例如:
public class MyTestClass{
public static MyTestClass myTest= new MyTestClass();
}
public class Beginner{
public static void main(String[] args){
System.out.println(MyTestClass.myTest==null);
}
}
当我第一次在main()中调用MyTestClass.myTest时; MyTestClass将处于加载过程中,我尝试在加载MyTestClass时创建一个MyTestClass对象;应该不创建循环类加载,这可以是无限的? 如何在java中处理它?</ p>
答案 0 :(得分:1)
事件的顺序如下:
在您的案例中执行初始值设定项包括
public static MyTestClass myTest= new MyTestClass();
这意味着main
中的代码会看到MyTestClass.myTest
非空。
您唯一能够看到MyTestClass.myTest
为null的时间是在静态初始值设定项中创建的MyTestClass
实例的构造函数中。