Java静态初始化程序似乎是多余的

Chu*_*urk 3 java initialization

所以我确实阅读了从这个线程执行静态initalizer的内容.Java中的静态初始化程序.但是我遇到了别人写的一些旧代码,似乎无法理解为什么他会像他那样使用它.

我的课:

public class ClassA extends Thread {
  .... private vars ....

  private static Config config;

  static {
    config = null;
  }

  public ClassA(Config config) {
    ClassA.config = config;
  }
}
Run Code Online (Sandbox Code Playgroud)

他为什么不这样做呢?

public class ClassA extends Thread {
  .... private vars ....

  private static Config config = null;

  public ClassA(Config config) {
    ClassA.config = config;
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道静态initalizer会被调用作为被重新类的类,因此它设置config => null,而如果我不使用静态initalizer,实例变量会在构造函数之前获得初始化,并且在super之后.那么两个班级不会做同样的事情吗?

Lou*_*man 5

这些类正在做同样的事情,但是更复杂的静态初始化器不能总是在一行上完成.