我看到的大多数程序在公共(public)类中都有 main 方法,这与无修饰符类相反。例如:
public class Main
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
而不是
class Main
{
public static void main(String[] args)
{
System.out.println("Hello, World!");
}
}
据我所知,将类显式公开的唯一原因是使其对其自己的包之外的类可见。
main 的工作只是充当实际程序 API 的插件,可以轻松地与带有 main 的任何其他类互换(GUI/CUI 一直在变化,并且必须设计为一次性的)。
如果我不希望该类对其他 Java 类可见;如果我需要它,我可以为新的 main 创建一个新的容器类,它知道它可能被其他类使用,并且它将是公共(public)的。
除了教人们以与其中的类相同的方式命名其类之外,是否有任何理由默认为主“公共(public)”创建容器类(如果省略公共(public),则不会强制执行,并导致“混淆”为什么 Foo.java 生成 Main.class?”)?
最佳答案
我认为通常这样做有 3 个原因:
- 在非公共(public)类中拥有公共(public)静态方法感觉很奇怪
- 主类很少在公共(public) API 库中公开,因此这并不重要。而且IDE一般都会默认生成公共(public)类。
- 必须调用 main 方法的 VM 引导代码被视为包的外部代码,因此将类公开以使其可供逻辑上的外部代码访问是正确的。
关于java - 是否有真正的理由将 Java main 放在公共(public)类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40876176/