我正在阅读Bruce Eckel的 Thinking in Java,第4版,他介绍了包的概念以及它们如何更好地遵循操作系统的层次结构,以便于访问和解决类文件。
嗯,他说,
每个编译单元的名称必须以.java结尾,并且在.java中 编译单元可以有一个必须具有相同的公共类 将name命名为文件(包括大小写,但不包括.java 文件扩展名)。每个人只能有一个公共课 编制单位;否则,编译器会抱怨。
现在,可以有几个具有相同包名称的编译单元(我测试过它)。但为什么这样做有意义呢?通过这种方式,它们彼此不是绝缘,当您编译它们时,所有类文件都在1个目录中。
答案 0 :(得分:0)
对于编译单元,有一个主类和支持类。但是,如果2个编译单元具有相同的包名称,并且您使用javac命令行手动编译,则所有类将最终位于同一目录中,但并非所有类都在逻辑上相互关联。那么,为什么2个编译单元具有相同的包名称是有意义的呢?
如果您拥有彼此相关的代码库(一组类),那么只有您将它们放在同一个包中。否则,总是为提供不同功能的类提供不同的包。
如果指定相同的包名并进行编译,它们将最终位于同一目录中,因为这是您定义它们的方式。 Java编译器不会检查具有相同包名的所有类是否相关。这是程序员的选择,他希望将哪些类放入同一个包中以及不同包中的哪些类。
您可以以java JDK代码为例。所有与输入和输出相关的类都放入io
包,实用程序类放入util
包中等。
根据我的理解,当您处理大型项目时,非常重要如何命名每个类以及如何在包层次结构中进一步组织它们
希望它能清除一些空气。