我刚刚提出Java SE的学习曲线,对于包名称的通常Java约定没有问题,例如 com.example.library_name_here.package_name_here
除了.
我一直注意到在一些相当知名的软件包中没有遵守这个规则.
JLine:jline.*
JACOB:com.jacob.*
(没有jacob.com)
JNA :( com.sun.jna.*
网站上的免责声明说明:Sun不赞助这个项目,即使包名(com.sun.jna)可能暗示其他情况.)
所以我想知道,是否存在通常的反向域名约定失效的情况,并且有很好的方法可以绕过它?我能想到的唯一案例是围绕域名所有权问题(例如,您更改了项目托管/域名,或者已经有一个众所周知的软件包对您的域名具有"擅自占用权",或者您对域的所有权运行out和别人把它搞砸了.
编辑:如果我使用我公司的域名,我们被收购或分拆,我们应该怎样处理包名?保持相同或重命名?(我认为从引用包的编译类失败的角度看重命名是不好的)
这是一个命名惯例.没有真正的要求,甚至没有期望包名映射到域名.
一般的想法是两个组织不会拥有相同的域,因此使用域名作为包的一部分可确保没有命名空间冲突.但这只是一个建议.
有人在sun命名空间中拥有包是有充分理由的.如果他们提供公共API的实现,则通常需要在API的命名空间中实现这些类.