Sri*_*san 6 java static-block classloading
As per java doc, static block is executed when the class is initialized.
Could anyone please tell me why static block is not executed when I run below code?
class A {
static {
System.out.println("Static Block");
}
}
public class Main {
public static void example1() {
Class<?> class1 = A.class;
System.out.println(class1);
}
public static void example2() {
try {
Class<?> class1 = Class.forName("ClassLoading_Interview_Example.ex1.A");
System.out.println(class1);
}catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
example1();
}
}
Run Code Online (Sandbox Code Playgroud)
类的静态初始化通常在第一次发生以下事件之前立即发生:
- 创建该类的实例,
- 调用类的静态方法,
- 分配了类的静态字段,
- 使用非常量静态字段,或 [...]
您目前没有执行上述任何操作。所以,通过替换
Class<?> class1 = A.class;
System.out.println(class1);
Run Code Online (Sandbox Code Playgroud)
以此为例
A object = new A();
Run Code Online (Sandbox Code Playgroud)
会给你你的结果。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |