为什么java包名称应该是小写的?

实际上,这完全是理论上的问题。但有趣的是,为什么java规范不允许在包中包含大写字符字母,并导致编写如下内容:

com.mycompany.projname.core.remotefilesystemsynchronization.*

而不是

com.myCompanyName.projName.core.remoteFileSystemSynchronization.*

答案 1

直接来自 Oracle Docs

包名称全部以小写形式编写,以避免与类或接口的名称发生冲突。


答案 2

但有趣的是,为什么java规范不允许在包中包含大写字符字母,并导致编写如下内容:

该规范允许它很好。使用全小写只是一个约定

正如gtgaxiola所说,这确实避免了与类型名称的冲突......在 .NET 命名约定中,确实会发生这种情况,从而导致建议您不要将类命名为与其命名空间相同的名称。当然,使用camelCase软件包可以完全避免碰撞。

我怀疑现实情况是,在创建包命名约定时没有彻底考虑它。就我个人而言,我很少发现这是一个问题 - 如果我最终看到一个包含“远程文件系统同步”元素的软件包,那么大写并不是我最关心:)