7

我的域名是 3DTOPO.com。显然 java 不允许包域名以数字开头。

为什么Java反向域名不遵循与域名相同的规则?我真的不想将我的包命名为 com.threedtopo ....

对于不是我的域名的初学者!其他任何人都可以自由注册和使用该域。此外,这很尴尬,而且不是我公司的名称。

有人有包名建议吗?

4

4 回答 4

11

我认为您的意思是 Java 不允许包名称以数字开头。

一种常见的替代方法是在其前面加上下划线 _3dtopo。

于 2012-10-18T00:18:01.577 回答
10

Sun/Oracle 在 Java 教程的命名包部分专门解决了这个问题:

在某些情况下,互联网域名可能不是有效的软件包名称。如果域名包含连字符或其他特殊字符,如果包名称以数字或其他非法用作 Java 名称开头的字符开头,或者如果包名称包含保留的 Java 关键字,则会发生这种情况,比如“int”。在这种情况下,建议的约定是添加下划线。

他们继续举几个例子,在这种情况下相关的例子是 domain123name.example.com变成 package com.example._123name

于 2014-02-20T23:18:11.280 回答
5

根据RFC 1912

主机名标签中允许的字符只有 ASCII 字母、数字和“-”字符。标签可能不都是数字,但可能有一个前导数字(例如,3com.com)。标签必须以字母或数字结尾和开头。参见 [RFC 1035] 和 [RFC 1123]。(标签最初在 [RFC 1035] 中被限制以字母开头,据报道,一些较旧的主机在 [RFC 1123] 中的放宽仍然存在问题。)请注意,有些 Internet 主机名违反了此规则(411.org,1776 .com)。在 [RFC 1033] 中允许标签中存在下划线,但 [RFC 1033] 仅供参考,并未定义标准。目前至少有一种流行的 TCP/IP 实现拒绝与其中带有下划线的主机通信。必须注意的是,[1035] 中的语言是这样的,这些规则是自愿的——它们是为那些希望最小化问题的人准备的。请注意,Internet 主机名的规则也适用于 SMTP 中使用的主机和地址(请参阅 RFC 821)。

因此,域名前面的允许数字直到1989 年的RFC 1123才开始。

值得注意的是,他们在 1990 年开始编写 Java。那时以数字开头的域可能并不常见,因此包名似乎类似于主机名。

包名不必直接对应域名。对我来说,域名是临时的——它们可以买卖。包名称的持续时间可能比域名长得多。

对于它的价值,3com 通过购买另一个域来解决它。;-) 他们用于com.palm.webos 某些软件。

于 2012-10-18T00:38:17.133 回答
5

为什么Java反向域名不遵循与域名相同的规则?

因为:

  1. 它不是一个“反向域名”,它是一个 Java 包名。
  2. 它由不允许有前导数字的 Java 标识符组成。
于 2012-10-18T00:40:51.017 回答