1
我正在使用編譯器Tree api來將我的代碼解析到AST中,但visitCompilationUnit方法從未被調用,通過visitClass被調用的方法,我做錯了什麼?編譯單元訪問者 - Java編譯器樹api
第二個問題:有什麼辦法可以告訴編譯器截斷編譯後的代碼(我只在AST中被捕獲,而不是在類文件中)。
謝謝。
@SupportedSourceVersion(value=SourceVersion.RELEASE_7)
@SupportedAnnotationTypes("*")
public class Parser extends AbstractProcessor {
.
.
.
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnvironment) {
for (Element e : roundEnvironment.getRootElements()) {
System.out.println(e + "***");
TreePath tp = trees.getPath(e);
// invoke the scanner
rootVisitor.scan(tp, trees);
}
return true;
}
}
public class OdpaVisitor extends TreePathScanner<Object, Trees> {
protected RepositoryIface repository;
private String pckg;
public OdpaVisitor(RepositoryIface repository) {
this.repository = repository;
}
@Override
public Object visitCompilationUnit(CompilationUnitTree node, Trees p) {
repository.savePackage(node.getPackageName().toString());
this.pckg = node.getPackageName().toString();
return super.visitCompilationUnit(node, p);
}
@Override
public Object visitClass(ClassTree node, Trees p) {
repository.saveClass(node.getSimpleName().toString(), pckg);
return super.visitClass(node, p);
}
}
thx,適合我:-) – malejpavouk 2012-04-05 15:00:30