gpt4 book ai didi

java - 当可以使用 static{} 时为什么还要使用 main() ?

转载 作者:行者123 更新时间:2023-12-03 04:31:22 24 4
gpt4 key购买 nike

是什么让 public static void main(String args[]) {} 成为测试代码的约定,而不是简单的 static {}

class Test {  
public static void main(String args[]) {
System.out.println("testing");
}
}

它看起来具有相同的功能,您可以实例化所有者类,使用它的方法,其他类,甚至也发送输出:

class Test {  
static {
System.out.println("testing");
}
}

是否有不使用小型 static {} 来运行平均测试的标准原因?我可以安全地将其视为我的选择/偏好吗?

换句话说,我想找到一种情况,您将代码放入一个代码中,而您不能(或不应该)将代码放入另一个代码中,它不会运行或给出意外的结果,等等。

最佳答案

我想说,不使用 static {} 来处理此类事情的最重要原因是您几乎无法控制它的运行时间。 static {} block 在“类初始化时”运行,这意味着为此目的至少有四种(注意西类牙宗教裁判所)有害的事情:

  • 这并不一定会因为类加载而发生。
  • 另一方面,它确实发生只是因为您想要类的实例或引用其他类的静态字段,这是您不想将代码与广泛的代码一起放置的主要原因static {} block 中的副作用。
  • 也不能保证不会因为 Jar 文件位于类路径上这样简单的原因而发生这种情况。 JVM 可以随时运行 static {} block ,只要是在其他代码对类进行任何静态引用之前即可。 “之前”可能意味着“虚拟机启动时”。
  • 没有任何虚拟机实现具有任何调用参数来根据您的请求运行此类代码。

static {} block 的目的是初始化静态类数据(当然,以可能相当复杂的方式),从前面的几点您可能会明白为什么它不是特别有用对于其他任何事情。

关于java - 当可以使用 static{} 时为什么还要使用 main() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113965/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com