我有一个关于静态块的问题:
假设我有一个看起来像这样的类:
class SomeClass {
static {
System.out.println("static block");
}
}
SomeClass
我在某处定义了一个类型的变量。
public static void main(String args[]) {
SomeClass foo;
}
现在我认为静态块会被执行,但事实并非如此。据我所知,静态块在类加载器加载后立即执行SomeClass
类,静态块就会执行。现在到我真正的问题:
不是在我定义该类型的变量后立即加载类吗?. 如果是,为什么不执行静态块?
如果答案是否定的,那么我怎么知道类加载器是否已经加载了一个类以及加载该类的不同可能性(我知道 2:初始化变量和使用静态字段/方法)