我尝试使用没有Main方法的静态块打印某些内容。
但是我怎么知道在类加载静态块时
叫。

此处删除了主要方法,不在CMD和Eclipse IDE中打印任何内容。


  输出:(采用主要方法)


调用了静态块........
我:6

public class StaticBlock
{
  static int i = 5;
  static
  {
      System.out.println("Static Block Called........");
    i ++;
  }
  public static void main(String args[])
  {
      System.out.println("i :"+i);
  }
}

最佳答案

除非未在某处引用它,否则不会加载您的StaticBlock类。拥有main方法会导致您的类被加载,因为jvm在您运行该类时会将该类加载。只要在项目中的任何地方引用了StaticBlock类,它就可以是同一类中的main方法,也可以是其他类中的main方法。这将导致该类被加载,并且在对类进行装载时,将立即执行该类中的静态块。

通过引用,我的意思是要么创建它的实例,要么使用该类的名称使用任何公共方法或该类的字段,即StaticBlock.filed或StaticBlock.method()。

简而言之,当类加载器加载类时,将执行类静态块。

09-16 03:55