我尝试使用没有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()。
简而言之,当类加载器加载类时,将执行类静态块。