所以我确实读过了什么以及何时执行静态initalizer的线索。 Static initializer in Java。但是我遇到了一些别人写的旧代码,似乎无法理解他为什么会像他那样使用它。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;
}
}
我的理解是静态initalizer权的构造函数之前和之后得到调用的类被redenered,因此它设置配置=>空,而如果我不使用静态initalizer,实例变量得到initalizer超。那么这两个班级不会做同样的事情吗?
所以可以说我可以使用第二个实现并且不会改变任何功能。 – Churk 2012-04-17 15:21:00
也许该类的作者首先做了一些更复杂的初始化,然后删除它,然后不删除静态初始化器。但这只是一个猜测。无论如何,你的答案是准确无误的(+1)。 – 2012-04-17 15:21:16
@Churk在这种特殊情况下?是。 – 2012-04-17 15:21:17