SmallJava 中的作用域机制与定制
1. 元素限定名与导出对象
在 SmallJava 中,元素的限定名是一个重要的概念。限定名用于唯一标识类中的各个元素,其计算规则与元素的包含关系相关。以下是 SmallJava 类中各元素的限定名示例:
| 对象 | 限定名 |
| ---- | ---- |
| SJClass C | C |
| SJField f | C.f |
| SJMethod m | C.m |
| SJParameter p | C.m.p |
| SJVariableDeclaration v | C.m.v |
需要注意的是,SJMethodBody 由于没有名称特性,不参与包含的变量声明限定名的计算。限定名还被NamesAreUniqueValidator用于判断两个元素是否重复。
为了理解作用域背后的机制,了解如何访问索引是很有帮助的。资源的索引对象描述存储在IResourceDescription中,索引由IResourceDescriptions实现,可以通过注入的ResourceDescriptionsProvider的getResourceDescriptions(Resource)方法获取。不同的上下文会返回不同的资源描述,例如磁盘上的文件资源描述和编辑器中未保存更改的资源描述。
以下是实现索引相关操作的SmallJavaIndex类: