java - 为什么 `main`在这里被调用两次?

标签 java static program-entry-point

这是我的代码:

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

我得到以下输出:

done 
done

有人可以解释一下原因吗?

最佳答案

原因是main被调用了两次:

  1. 明确地,来自static initialization block一旦类加载完毕。
  2. 程序一启动就隐式进入程序。

如何解决这个问题?要么不要显式调用它,要么重命名它,这样就不会自动调用它。

关于java - 为什么 `main`在这里被调用两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10095775/

相关文章:

c - 与 C 中的 main() 函数不同

java - 使用 Integer 包装类创建了多少个对象?

java - preHandle 中除了 HandlerMethod 之外还有什么处理程序?

PHP: self::vs parent::with 扩展

c++ - "Undefined reference"声明的 C++ 静态成员变量

c - main() 的返回值会发生什么?

java - 如何将网络上的adb设备列表存储到php数组中

java - 在 WEAR OS 上启动 map 需要 WRITE_SETTINGS 权限

c - 何时使用静态内联而不是常规函数

没有 100% cpu 的 C 主循环