与无修饰符类相比,我看到的大多数程序在公共类中都有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创建一个新的容器类,该类知道其他类可以使用它,并且它将是公共的。

除了让人们以与其内部类相同的方式命名他们的类外,是否有默认理由使主要的“公共”容器类成为默认类(如果您省略公共,则不会强制执行,并且会引起“为什么Foo混淆”) .java生成Main.class?”)?

最佳答案

我认为通常这样做的原因有3个:

  • 在不是public
  • 的类中拥有一个public static方法感觉很奇怪
  • 主类很少在公共API库中公开,因此并不重要。 IDE通常默认情况下会生成公共类。
  • 必须调用main方法的VM的引导代码被视为程序包外部的代码,因此将类公开以使其可以对此逻辑外部代码进行访问是正确的。
  • 07-24 09:47
    查看更多