为什么Java允许我们编译一个名称不同于文件名的类?

问题:

我有一个文件Test.java及其中的以下代码。

public class Abcd
{
        //some code here

}

现在该类没有编译,但是当我删除public修饰符时,它编译得很好。
Java背后的原因是什么,允许我们在不公开的情况下编译与文件名不同的类名。
我知道这是一个新手问题,但我无法找到一个很好的解释。

回答:

理由是每个.java文件允许多个顶级类。
许多类 – 例如事件监听器 – 仅限本地使用,而Java的最早版本不支持嵌套类。没有这种放松的“文件名=类名称”规则,每个这样的类将需要自己的文件,不可避免的结果是小的.java文件的不断增长和紧密耦合的代码的散布。
一旦Java引入了嵌套类,这个规则的重要性就会大大减少。今天,您可以浏览数百个Java文件,从不追求利用它的优势。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Why does Java allow us to compile a class with a name different than the file name?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

44 + = 47