为什么每个公共类都在一个单独的文件中?

2022-08-31 22:41:10

我最近开始学习Java,发现每个Java类都必须在单独的文件中声明,这很奇怪。我是一名C#程序员,C#不强制执行任何此类限制。

Java为什么要这样做?是否有任何设计方面的考虑?

编辑(基于几个答案):

为什么Java现在没有在IDE时代取消这个限制?这不会破坏任何现有的代码(或者会破坏它吗?


答案 1

我刚刚采用了一个C#解决方案,并做了这个(删除任何包含多个公共类的文件),并将它们分解为单个文件,这使生活变得更加轻松。

如果一个文件中有多个公共类,则会出现一些问题:

  1. 您如何命名该文件?其中一个公共课程?另一个名字?人们在糟糕的解决方案代码组织和文件命名约定方面存在足够多的问题,因此存在一个额外的问题。

  2. 此外,当您浏览文件/项目资源管理器时,最好不要隐藏内容。例如,您看到一个文件并向下钻取,有 200 个类全部混杂在一起。如果您有一个文件一个类,则可以更好地组织测试,并了解解决方案的结构和复杂性。

我认为Java做对了。


答案 2

根据 Java 语言规范,第三版

此限制意味着每个编译单元最多只能有一个这样的类型。此限制使 Java 编程语言的编译器或 Java 虚拟机的实现能够轻松地在包中查找命名类。例如,公共类型 wet.sprocket.Toad 的源代码可以在 file toad.java 在 wet/sprocket 目录中找到,相应的目标代码将在同一目录的 Toad.class 中找到。

重点是我的。

似乎基本上他们想将操作系统的目录分隔符转换为命名空间的点,反之亦然。

所以,是的,这是某种设计考虑。


推荐