Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
随着全世界程序员使用 Java 编程语言编写类和接口,很多程序员可能会对不同类型使用相同的名称。实际上,前面的示例就是这样:当 java.awt 包中已经存在 Rectangle 类时,它定义了一个 Rectangle 类。尽管如此,编译器允许两个类在不同的包中具有相同的名称。每个 Rectangle 类的完全限定名称包括包名称。也就是说,graphics 包中 Rectangle 类的完全限定名是 graphics.Rectangle,以及 java.awt 包中的 Rectangle 类的完全限定名是 java.awt.Rectangle。
除非两个独立的程序员为其包使用相同的名称,否则这很有效。是什么避免了这个问题?规范。
包名称全部小写,以避免与类或接口的名称冲突。
公司使用他们的反向互联网域名来开始他们的包名称,例如在 example.com 的程序员创建一个名为 mypackage 的包 com.example.mypackage。
在单个公司内发生的名称冲突需要通过公司内的规范来处理,可能是在公司名称后面包含区域或项目名称(例如,com.example.region.mypackage) 。
Java 语言本身的包以 java. 或 javax. 开头
在某些情况下,互联网域名可能不是有效的包名。以下情形会发生这种情况:如果域名包含连字符或其他特殊字符,如果包名称以数字或其他非法用作 Java 名称开头的字符开头,或者包名称包含 Java 的保留关键字,例如 "int"。在这种情况下,建议的规范是添加下划线。例如:
| 域名 | 包名称前缀 |
|---|---|
hyphenated-name.example.org |
org.example.hyphenated_name |
example.int |
int_.example |
123name.example.com |
com.example._123name |