7

我的问题是为什么人们创建目录结构时至少有一个名为 edu 的文件夹,然后是另一个名为 mit 的文件夹(例如),然后是子文件夹中的所有代码?

这是某种标识符吗?

计算机是否出于某种原因实际使用了该结构 - 还是只是用于帮助读者?

如果是这样,它对读者有什么帮助?

4

6 回答 6

8

这样做是为了防止名称冲突。默认规则是使用您的域名的反向作为包结构

因此,谷歌会将他们所有的代码保存在com.google.*包中,而微软会将他们的代码保存在com.microsoft.*包中。然后,如果两家公司都实现了 SearchEngine 类,就不会发生命名冲突。

教育机构做同样的事情,所以你知道子包中的任何代码都可能是由麻省理工学院edu.mit.*的一个小组开发的

于 2013-01-18T18:10:50.420 回答
4

Java 约定是安排源目录以匹配包层次结构。参见例如管理源文件和类文件

因此,如果您有一个类edu.mit.stk.Foo,那么它将位于edu/mit/stk/Foo.java.

于 2013-01-18T18:09:58.143 回答
2

这是一个命名空间。它可以防止类/包名称冲突。通常它是公司的反向域名(例如com.ibm.PackageName),但它的值是任意的,可以是任何值。

于 2013-01-18T18:10:37.303 回答
0

按照约定,Java 包名称以相反的顺序遵循域命名约定。因此edu.mit是在 . 开发的包的适当前缀mit.edu

于 2013-01-18T18:10:49.170 回答
0

与包约定匹配(看起来像颠倒的 Internet 域名)。

您可以在http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html查看更多详细信息

于 2013-01-18T18:11:26.760 回答
0

包使用它们的反向互联网域名命名,以避免名称冲突。所以来自 ecliplse 的 calss 可能在package com.eclipse.XYZClass

命名包

公司使用他们的反向 Internet 域名来开始他们的包名——例如,com.example.mypackage 表示由 example.com 的程序员创建的名为 mypackage 的包。

要正确识别,包应位于同名文件夹中。因此,如果您有一个类 in com.madbreaks.MyClass,您的文件夹结构将为

com
|
+--madbreaks
   |   
   +---MyClass

另请参阅:关于包的 Java 教程

于 2013-01-18T18:12:01.313 回答