为什么人们会在Java中创建像edu.mit.stk这样的目录结构?

7
我的问题是为什么人们创建至少包含一个名为edu的文件夹,然后再创建一个名为mit的单个文件夹,并将所有代码放在子文件夹中的目录结构?
这是某种标识符吗?
计算机是否实际上会使用此结构 - 还是仅用于帮助读者?
如果是这样,它如何帮助读者?

http://docs.oracle.com/javase/tutorial/java/package/index.html - Dave Newton
这里涌现了大量的重复答案... - Steve Kuo
@SteveKuo 他们都很好 - 现在只是等待计时器。 - sdasdadas
6个回答

8
这样做是为了防止名称冲突。默认规则是使用您的域名的反向作为包结构。
因此,Google将所有代码保存在com.google.*包中,而Microsoft将在com.microsoft.*包中保存它们的代码。然后,如果两家公司都实现了一个SearchEngine类,就不会有命名冲突。
教育机构也采用同样的方法,所以你知道任何在edu.mit.*子包中的代码很可能是由MIT的一个团队开发的。

4

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

因此,如果您有一个名为edu.mit.stk.Foo的类,则其位置将为edu/mit/stk/Foo.java


2

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


0

为避免名称冲突,包使用其反转的互联网域名进行命名。因此,来自eclipse的类可能在package com.eclipse.XYZClass中。

来自命名一个包:

公司使用其反转的互联网域名作为其包名称的开头,例如,com.example.mypackage表示由example.com的程序员创建的名为mypackage的包。

为了正确识别包,应将其放置在具有相同名称的文件夹中。因此,如果您在com.madbreaks.MyClass中有一个类,则文件夹结构将如下所示:

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

另请参阅:Java包教程


0

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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接