在 Java 中避免包名冲突的标准方法是使用反向域约定com.[mycompany].[rest-of-the-package-name]
。这非常有效......如果一个人拥有域 [mycompany].com。
但是,有几个个人开发人员(或学生):
- 不要(或负担不起)拥有域名
- 仍然会想出一些包名称,希望它们是独一无二的。
仅此一项就引入了包冲突的范围。
此外,假设我拥有 [mycompany].com。是什么阻止了开发人员创建与我的包前缀相同的库并分发它?AFAIK,关于包名称没有法律约束力(“你必须拥有你在 Java 包中使用的域”)。更不用说开发人员的这一行为可能不是故意的(我们中有多少人在为我们的包命名之前会在网上搜索一个不存在的域名?)。
更进一步,即使我拥有一个域名,它可能适合也可能不适合用作包名称(我的域名可能包含连字符,或者它可能太长以至于虽然它是一个合法的包名称,但它仍然可以使其不切实际)。
所以我的问题是:我如何真正使我的 Java 包名称独一无二?