是否有一个真正的理由让Java主要在公共类中?

时间:2016-11-29 21:35:59

标签: java

我看到的大多数程序在公共类中都有main方法,与no-modifier类相比。例如:

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创建一个新的容器类,它知道它可以被其他类使用,并且它将是公共的。

是否有任何理由为main" public"制作容器类?默认情况下,除了教人们以与其中的类相同的方式命名他们的类(如果省略公共,则不会强制执行,并导致&#34混淆;为什么Foo.java会生成Main.class?&#34 ;?)

2 个答案:

答案 0 :(得分:4)

我认为通常以这种方式完成这有三个原因:

  1. 在非公开的类中使用公共静态方法感觉很奇怪
  2. 主要类很少在公共API库中公开,因此它并不重要。 IDE通常默认生成公共类。
  3. 必须调用main方法的VM的引导代码被视为包外部的代码,因此将该类设置为public使其可以访问此逻辑外部代码是正确的。

答案 1 :(得分:0)

我没有技术上的原因。

我能想到的非技术原因是:

  • 公约。有多少人会惊讶地看到非公立的主要班级?从那种惊喜中获利?
  • 意图的表达。 public表示public,no modifier表示package-private。我认为主要课程是供公众使用的,因此public更好地表达了这一意图。