为什么我们在单个文件中声明公共类?

时间:2012-05-31 10:38:31

标签: java java-ee

我是Java编程的新手,我创建了一个名为Demo的类并保存为sample.java,同时编译此java程序时出现编译错误,如下所示

  public class Demo {
        public static void main(String[] args) {
        System.out.println("This is year");
                }
            }

sample.java:3:类Demo是公共的,应该在名为Demo .java的文件中声明

为什么我们在单个文件中声明公共类......

由于

Mukthyar

4 个答案:

答案 0 :(得分:2)

因为这是Java规范所要求的(或者至少,它允许实现需要这个;请参阅下面的Jon的评论)。


关于“为什么”,我只能假设。但很明显,Java的设计者非常热衷于明确的编码约定等。每个源文件的一个公共类意味着在哪里找到某些东西没有含糊不清。

(如果有技术原因,我不知道。)

答案 1 :(得分:1)

TL; DR:降低软件的概念复杂性。

如果隐藏在具有不相关名称的文件中的许多公共类使得仅通过查看包结构就更难以看到程序的概念结构。

@因为java规范如此说 - 我认为真正的问题是规范背后的推理

答案 2 :(得分:1)

@Oli Charlesworth是对的:这是Java语言规范所要求的。你可能会问为什么他们需要这个?可能的答案是清楚地说明问题。根据定义,类是原子单位。你可以用其他版本替换class,如果没有更改公共接口,一切都会继续工作。

因此,Java语言设计者决定强迫我们将每个类存储在单独的文件中。

他们只为非公开课做了一些例外。几个非公共类可以保存在一个文件中。我认为原因是非公共类是实现的一种血腥细节,可以随时由作者改变。由于类是非公开的,因此这些更改不应影响任何API用户。

但我强烈建议您在单独的文件中保存每个类(即使它不是公共的)。这提高了代码的可读性,并在一天结束时提高了质量。

答案 3 :(得分:0)

这是为了阻止人们在非正交命名文件中混乱数百个类的文件。 namespacepart / namespacepart / namespacepart / classname结构用于提供标准且可持续的结构。