因此,我确实阅读了从该线程执行静态初始化程序的内容和时间。Java 中的静态初始化程序。但是我遇到了一些其他人编写的旧代码,似乎无法理解他为什么会以他的方式使用它。
我的课:
public class ClassA extends Thread {
.... private vars ....
private static Config config;
static {
config = null;
}
public ClassA(Config config) {
ClassA.config = config;
}
}
他为什么不这样做呢?
public class ClassA extends Thread {
.... private vars ....
private static Config config = null;
public ClassA(Config config) {
ClassA.config = config;
}
}
我知道静态初始化程序在重新生成类时被调用,因此它设置 config => null,而如果我不使用静态初始化程序,实例变量在构造函数之前和超级之后获取初始化程序。那么这两个班级不会做同样的事情吗?