为什么在Java包中要使用反向域名结构,比如com.something或org.something?
我知道这样做可以带来某种独特性,但为什么需要这种独特性?
关于为什么我们要反向进行操作:想象一下你有两个重要的软件包,一个是会计软件包,另一个是图形软件包。如果你按照“正常”的顺序指定它们:
accounting.mycompany.org
graphics.mycompany.org
这意味着存在一个重要的会计
软件包,其中的一个子部分是针对mycompany
的,而该软件包的一个子部分称为org
包,您实际上正在使用它。但是,你想要这个:
org.mycompany.accounting
org.mycompany.graphics
这更有意义。在所有来自组织(org
)的包中,你特别关注mycompany
,它有两个子包,分别是accounting
和graphics
。
a.b.c.d
时,它意味着你从类a
开始,嵌套到其字段b
,再嵌套到该字段的c
,然后嵌套到该字段的d
。类似地,包组织应该也是这样工作的。此外,在Python中,子包装实际上是按照我在这里写出的方式完成的。因此,这不是不可能,但这将是愚蠢的。 - Claudiu全局唯一的包名可以避免来自不同来源的库之间的命名冲突。而不是创建一个新的全局名称数据库,而是使用域名注册表。根据JLS:
生成唯一包名的建议约定仅是一种在现有广为人知的唯一名称注册表上搭载包命名约定的方式,而不是必须创建一个专门的注册表来存储包名。