我最近开始学习Java,发现每个Java类都必须在单独的文件中声明非常奇怪。我是C#程序员,C#并没有实施任何此类限制。
Java为什么要这样做?有设计上的考虑吗?
编辑(基于几个答案):
为什么在IDE时代Java现在不取消此限制?这不会破坏任何现有代码(或者会破坏吗?)。
根据Java语言规范,第三版:
这种限制意味着每个编译单元最多只能有一个这样的类型。 这种限制使Java编程语言的编译器或Java虚拟机的实现易于在包中查找命名类 ; 例如,可以在目录wet / sprocket的Toad.java文件中找到公共类型wet.sprocket.Toad的源代码,并在同一目录的Toad.class文件中找到相应的目标代码。
重点是我的。
似乎基本上他们希望将OS的目录分隔符转换为命名空间的点,反之亦然。
是的,这是某种设计上的考虑。