为什么 java 建议在包名称的开头使用 TLD,即为什么必须是
package com.example.pack;
它也可以
package pack.example.com;
只是想知道决定将 TLD 放在开头的原因可能是什么。
为什么 java 建议在包名称的开头使用 TLD,即为什么必须是
package com.example.pack;
它也可以
package pack.example.com;
只是想知道决定将 TLD 放在开头的原因可能是什么。
这个约定被记录在这里,它被证明并且适用于很多事情。
宇宙是com
并且可以是SG
,ORG
或任何TLD :)。
其次是您的域example
。
其次是你的项目pack
。
其次是你的层web | ejb | data
。
com.example.pack.web
com.example.pack.ejb
com.example.pack.data
com.example.project2.web
com.example.project2.ejb
com.example.project2.data
com.singtel.projecta.web
com.singtel.projectb.data
该包对应于文件系统中的目录。pack.example.com 和 pack.example2.net 都在同一个目录中,即使 url 表明它们不相关,但是对于 com.example.pack 和 net.example2.pack,相关的包在同一个目录中.
主要动机是通过分层组织类和资源(如文件系统)来避免命名空间冲突。将文本文件引用为MyDoc.txt\My Documents\C:
. 使用您的 TLD 名称,颠倒过来,可以更自然地组织事情,从更一般到更具体。
从更一般到更具体,这只是一种常见的约定,反之亦然。
同样,我们写道:
package_name
. class_name
(而不是class_name
. package_name
);object
. member
;outer_class
. inner_class
;等等。
Java 包名称应始终从最不具体到最具体读取。因此,它应该始终以域名开头。
一个很好的理由是类名是前缀而不是包名后缀——所以你在每个点之后都朝着同一个方向移动。此外,包名称映射到目录名称,这也强制使用最广泛的优先顺序。
在树中,树干是主要部分,叶子是不太常见的部分。
包名是一棵树。
考虑在类路径中的所有类中搜索您编写的类。你会开始 com.* com.example.* 等等,直到你找到你的。