上篇博客末尾提到了一棵抽象语法树长什么样子。JDT提供了一套DOM API来让我们顺利地控制这样一棵树。
读完本篇后请继续完成上篇的延伸阅读:http://help.eclipse.org/ 点击JDT Plug-in User Guide -> Programmer's Guide -> JDT Core -> Manipulating Java Code。
各种语法元素用不同的结点类来表示,一些主要的类有:
CompilationUnit: 编译单元,相当于一个.java文件
AbstractTypeDeclaration: 各种类型的声明及定义,如类、接口、枚举、注解。以下几个类都继承自该类
TypeDeclaration: 类或接口
EnumDeclaration: 枚举类
AnnotationInterfaceDeclaration: 注解,即@interface Xxx {...}
MethodDeclaration: 方法
FieldDeclaration: 域 (成员变量)
Modifier: 修饰符,如public, static, volatile等,也包括注解,如@Override
Block: 代码块,也就是花括号{...}所包裹的一段代码
Statement: 语句,是代码块的一部分,也就是以;或}结尾的一段代码
Expression: 表达式,是语句或声明的一部分, 例如a+b, "seg", a.call(b), ((Number) this)等
其中一些是抽象类,它们会有一些具体的子类,列举在抽象类的javadoc中。
结点之间通过对象引用来连接,举个例子,MethodDeclaration主要有这么几个属性: