当包存储在文件系统(第7.2.1节)中时,如果在由类型名称加上名称的文件中找不到类型,主机系统可以选择强制执行编译时错误的限制.如果满足以下任一条件,则为扩展名(例如
.java或.jav):
- 该类型由声明类型的包的其他编译单元中的代码引用.
- 声明了类型
public(因此可以从其他包中的代码访问).这种限制意味着每个编译单元最多只能有一个这样的类型.这种限制使得Java编程语言的编译器或Java虚拟机的实现很容易在包中找到命名类; 例如,公共类型的源代码
wet.sprocket.Toad可以在Toad.java目录中的文件中找到,wet/sprocket相应的目标代码可以Toad.class在同一目录中的文件中找到.当包存储在数据库 (第7.2.2节)中时,主机系统不得强加此类限制.实际上,许多程序员选择将每个类或接口类型放在它自己的编译单元中,无论它是公共的还是由其他编译单元中的代码引用.
语言规范本身并没有规定这一点(我刚刚看了一下,没有找到任何参考),但它通常是由工具强制执行的。它使工具的依赖关系管理变得相当容易,因为如果类 A 引用了类 B,它就知道在哪里查找类 B。该约定扩展到与包结构相呼应的目录结构,但同样,这只是一个约定。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |