类的静态块在什么时候执行?

10 浏览
0 Comments

类的静态块在什么时候执行?

我有两个文件,让我们称它们为a.jar和b.jar。

b.jar依赖于a.jar。

在a.jar中,我定义了一个类,让我们称之为StaticClass。在StaticClass中,我定义了一个静态块,调用了一个名为"init"的方法:

public class StaticClass {
  static {
    init();
  } 
  public void static init () {
    // 在这里做一些初始化工作
  }
}

在b.jar中,我有一个main方法,所以在main方法中,我期望init()方法已经被调用了,但实际上没有。我怀疑这是因为jvm没有加载StaticClass类,有人能告诉我:

  1. 我的结论正确吗?
  2. 是什么触发了jvm加载一个类?
  3. 如何让静态块自动执行?

谢谢

0