我的问题是为什么人们创建目录结构时至少有一个名为 edu 的文件夹,然后是另一个名为 mit 的文件夹(例如),然后是子文件夹中的所有代码?
这是某种标识符吗?
计算机是否出于某种原因实际使用了该结构 - 还是只是用于帮助读者?
如果是这样,它对读者有什么帮助?
我的问题是为什么人们创建目录结构时至少有一个名为 edu 的文件夹,然后是另一个名为 mit 的文件夹(例如),然后是子文件夹中的所有代码?
这是某种标识符吗?
计算机是否出于某种原因实际使用了该结构 - 还是只是用于帮助读者?
如果是这样,它对读者有什么帮助?
这样做是为了防止名称冲突。默认规则是使用您的域名的反向作为包结构
因此,谷歌会将他们所有的代码保存在com.google.*
包中,而微软会将他们的代码保存在com.microsoft.*
包中。然后,如果两家公司都实现了 SearchEngine 类,就不会发生命名冲突。
教育机构做同样的事情,所以你知道子包中的任何代码都可能是由麻省理工学院edu.mit.*
的一个小组开发的
Java 约定是安排源目录以匹配包层次结构。参见例如管理源文件和类文件。
因此,如果您有一个类edu.mit.stk.Foo
,那么它将位于edu/mit/stk/Foo.java
.
这是一个命名空间。它可以防止类/包名称冲突。通常它是公司的反向域名(例如com.ibm.PackageName
),但它的值是任意的,可以是任何值。
按照约定,Java 包名称以相反的顺序遵循域命名约定。因此edu.mit
是在 . 开发的包的适当前缀mit.edu
。
与包约定匹配(看起来像颠倒的 Internet 域名)。
您可以在http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html查看更多详细信息
包使用它们的反向互联网域名命名,以避免名称冲突。所以来自 ecliplse 的 calss 可能在package com.eclipse.XYZClass
从命名包:
公司使用他们的反向 Internet 域名来开始他们的包名——例如,com.example.mypackage 表示由 example.com 的程序员创建的名为 mypackage 的包。
要正确识别,包应位于同名文件夹中。因此,如果您有一个类 in com.madbreaks.MyClass
,您的文件夹结构将为
com
|
+--madbreaks
|
+---MyClass
另请参阅:关于包的 Java 教程。