命名包
随着世界各地的程序员使用 Java 编程语言编写类和interface,许多程序员很可能会对不同的类型使用相同的名称。实际上,前面的示例就是这样做的:当java.awt
包中已经有Rectangle
类时,它定义了Rectangle
类。但是,如果它们在不同的程序包中,则编译器允许这两个类具有相同的名称。每个Rectangle
类的全限定名称包括程序包名称。也就是说,graphics
包中的Rectangle
类的完全限定名称为graphics.Rectangle
,而java.awt
包中的Rectangle
类的完全限定名称为java.awt.Rectangle
。
除非两个独立的程序员为其软件包使用相同的名称,否则这将很好地工作。是什么避免了这个问题?惯例。
Naming Conventions
包名称以小写形式编写,以避免与类或interface的名称冲突。
公司使用其反向的 Internet 域名开始其程序包名称,例如,example.com
的程序员创建的名为mypackage
的程序包的com.example.mypackage
。
单个公司内部发生的名称冲突需要按照该公司内部的约定进行处理,也许可以通过在公司名称后添加区域或项目名称(例如com.example.region.mypackage
)来解决。
Java 语言包本身以java.
或javax.
开头
在某些情况下,互联网域名可能不是有效的软件包名称。如果域名中包含连字符或其他特殊字符,或者软件包名称以数字或其他字符开头的 Java 名称开头都是非法的,或者软件包名称包含保留的 Java 关键字,则可能会发生这种情况例如“ int”。在这种情况下,建议的约定是添加下划线。例如:
合法化软件包名称
Domain Name | 软件包名称前缀 |
---|---|
hyphenated-name.example.org |
org.example.hyphenated_name |
example.int |
int_.example |
123name.example.com |
com.example._123name |