use*_*391 2 java static program-entry-point
是什么使public static void main(String args[]) {}测试代码的惯例而不是简单static {}?
class Test {
public static void main(String args[]) {
System.out.println("testing");
}
}
Run Code Online (Sandbox Code Playgroud)
它看似具有相同的功能,您可以实例化所有者类,使用其方法,另一个类,甚至发送输出:
class Test {
static {
System.out.println("testing");
}
}
Run Code Online (Sandbox Code Playgroud)
是否有标准的理由不使用小型static {}运行平均测试?我可以安全地作为我的选择/偏好吗?
换句话说,我想找到一个案例,你把一个代码放在一个你不能(或不应该)放在另一个代码中的代码,它不会运行或给出意想不到的结果等等.
我会说不使用static {}这些东西的最突出的原因是你几乎无法控制它的运行时间.static {}块"在类初始化时"运行,这意味着至少有四个(注意西班牙宗教裁判所)为此目的的有害事情:
static {}街区.static {}随心所欲地运行块,只要它是在来自其他代码的类的任何静态引用之前."之前"可能意味着"在VM启动时".static {}块的目的是初始化静态类数据(当然可能是非常复杂的方式),从前面的几点你可以看出为什么它对其他任何东西都不是特别有用.