当一个类里运行一个main函数,这个类就直接被加载
public class Base {
static int num = 1;
static {
System.out.println("Base " + num);
}
public static void main(String[] args) throws Exception{
// 不会初始化静态块
Class clazz1 = Base.class;
System.out.println("------");
// 会初始化
Class clazz2 = Class.forName("com.example.algorithm.reflection.Base");
}
}
输出
Base 1
------
当main函数在类外
public class Base {
static int num = 1;
static {
System.out.println("Base " + num);
}
}
class Main {
public static void main(String[] args) throws Exception{
// 不会初始化静态块
Class clazz1 = Base.class;
System.out.println("------");
// 会初始化
Class clazz2 = Class.forName("com.example.algorithm.reflection.Base");
}
}
输出
------
Base 1