静态变量如何在 class 加载时获取对象的值?
how static variable get value of object at the time of class loading?
由于静态变量在 class 加载时获得内存,这里我通过创建新的 A() 来分配它,它将在加载 class 后的 运行 时间分配].jvm如何在class加载时给new A()赋值?
public class A{
static A objA =new A();
public static void main(String x[]){}
}
这里没有什么奇怪的。加载 class,然后创建 new A()
并将其分配给 objA
。它实际上是如何在内部发生的并不真正相关,并且可能因 JVM 而异。
加载 class 时,JVM 调用 class 中的一个方法 <clinit>()V
此方法设置所有初始值,在您的情况下,它设置静态字段。
它可以在调用方法时创建实例,但这确实意味着如果您这样做,您不能在构造函数中假定所有静态字段都已设置。
由于静态变量在 class 加载时获得内存,这里我通过创建新的 A() 来分配它,它将在加载 class 后的 运行 时间分配].jvm如何在class加载时给new A()赋值?
public class A{
static A objA =new A();
public static void main(String x[]){}
}
这里没有什么奇怪的。加载 class,然后创建 new A()
并将其分配给 objA
。它实际上是如何在内部发生的并不真正相关,并且可能因 JVM 而异。
加载 class 时,JVM 调用 class 中的一个方法 <clinit>()V
此方法设置所有初始值,在您的情况下,它设置静态字段。
它可以在调用方法时创建实例,但这确实意味着如果您这样做,您不能在构造函数中假定所有静态字段都已设置。