我的问题是为什么人们创建目录结构,其中至少有一个名为edu的文件夹,然后是另一个名为mit的文件夹(例如),后面是子文件夹中的所有代码?
这是某种标识符吗?
计算机实际上是出于任何原因使用该结构 - 还是仅用于帮助读者?
如果是这样,它对读者有何帮助?
答案 0 :(得分:8)
这样做是为了防止名称冲突。默认规则是使用域名的反向作为包结构
因此,Google会将所有代码保留在com.google.*
个软件包中,而Microsoft会将其代码保留在com.microsoft.*
个软件包中。然后,如果两家公司都实现了SearchEngine类,则不会发生命名冲突。
教育机构做同样的事情,所以你知道edu.mit.*
子包中的任何代码都可能由MIT
答案 1 :(得分:4)
Java约定是安排源目录以匹配包层次结构。参见例如Managing Source and Class Files
因此,如果您有一个班级edu.mit.stk.Foo
,那么它将被定位为edu/mit/stk/Foo.java
。
答案 2 :(得分:2)
这是一个命名空间。它可以防止类/包名称冲突。通常情况下,公司的域名是反向的(例如com.ibm.PackageName
),但它的价值是任意的,可以是任何东西。
答案 3 :(得分:0)
按照惯例,Java包名称遵循域命名约定,顺序相反。因此,edu.mit
是mit.edu
开发的包的适当前缀。
答案 4 :(得分:0)
与包约定相匹配(看起来像反向的互联网域名)。
您可以在http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html
查看更多详情答案 5 :(得分:0)
使用反向互联网域名命名包以避免名称冲突。所以来自ecliplse的calss可能在package com.eclipse.XYZClass
公司使用他们的反向互联网域名开始他们的 包名称 - 例如,com.example.mypackage用于名为的包 mypackage由example.com的程序员创建。
要正确识别,包裹应该在同名的flder中。因此,如果您在com.madbreaks.MyClass
中有一个类,则将文件夹结构设置为
com
|
+--madbreaks
|
+---MyClass