为什么java建议在包名的开头加上TLD,即为什么必须
package com.example.pack;
它也可以
package pack.example.com;
只是想知道决定将TLD放在最开始的原因可能是什么。
答案 0 :(得分:3)
这个约定记录在here,它已被证明并适用于很多事情。
Universe是com
,可以是SG
,ORG
或任何顶级域名:)。
关注您的域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
答案 1 :(得分:3)
包对应于文件系统中的目录。 pack.example.com和pack.example2.net都会在同一个目录中,即使url建议它们不相关,但是使用com.example.pack和net.example2.pack,相关的包在同一个目录中
答案 2 :(得分:0)
这是从更一般到更具体的惯例,而不是相反。
同样,我们写道:
package_name
。class_name
(而不是class_name
。package_name
); object
member
;。outer_class
inner_class
;。等等。
答案 3 :(得分:0)
Java包名称应始终从最具体到最具体的方式读取。 因此,它应该始终首先从域名开始。
答案 4 :(得分:0)
有一个很好的理由是,类名是前缀而不是后缀和包名 - 所以你在每个点之后都朝着相同的方向移动。此外,包名称映射到目录名称,这也强制执行最广泛的第一个订单。
答案 5 :(得分:0)
在树上,树干是叶子不太通用的主要部分。
包名称是树。
将类路径中的所有类中的类搜索想象为您编写的类。你可以开始com。* com.example。* etc等。直到你找到你的那个。
答案 6 :(得分:0)
主要动机是通过分层组织类和资源(如文件系统)来避免命名空间冲突。将文本文件引用为MyDoc.txt\My Documents\C:
会很尴尬。使用您的TLD名称,可以更自然地将事物从更一般的组织到更具体的组织。