为什么让2个编译单元具有相同的包名称是有意义的?

时间:2016-01-10 13:02:23

标签: java package

我正在阅读Bruce Eckel的 Thinking in Java,第4版,他介绍了包的概念以及它们如何更好地遵循操作系统的层次结构,以便于访问和解决类文件。
嗯,他说,

  

每个编译单元的名称必须以.java结尾,并且在.java中   编译单元可以有一个必须具有相同的公共类   将name命名为文件(包括大小写,但不包括.java   文件扩展名)。每个人只能有一个公共课   编制单位;否则,编译器会抱怨。

现在,可以有几个具有相同包名称的编译单元(我测试过它)。但为什么这样做有意义呢?通过这种方式,它们彼此不是绝缘,当您编译它们时,所有类文件都在1个目录中。

1 个答案:

答案 0 :(得分:0)

  

对于编译单元,有一个主类和支持类。但是,如果2个编译单元具有相同的包名称,并且您使用javac命令行手动编译,则所有类将最终位于同一目录中,但并非所有类都在逻辑上相互关联。那么,为什么2个编译单元具有相同的包名称是有意义的呢?

如果您拥有彼此相关的代码库(一组类),那么只有您将它们放在同一个包中。否则,总是为提供不同功能的类提供不同的包。

如果指定相同的包名并进行编译,它们将最终位于同一目录中,因为这是您定义它们的方式。 Java编译器不会检查具有相同包名的所有类是否相关。这是程序员的选择,他希望将哪些类放入同一个包中以及不同包中的哪些类。

您可以以java JDK代码为例。所有与输入和输出相关的类都放入io包,实用程序类放入util包中等。

根据我的理解,当您处理大型项目时,非常重要如何命名每个类以及如何在包层次结构中进一步组织它们

希望它能清除一些空气。