我正在使用eclipse JDT AST解析器来处理一些Java代码,并试图提取字段和方法声明的类型绑定。这样做的逻辑是在我的Visitor类中(见下文)。不幸的是,我没有任何运气,也没有任何绑定解决(它们始终为空)。有趣的是,绑定可以在日食ASTView插件上使用相同的代码。我究竟做错了什么?在eclipse中无法通过AST处理来解决绑定
这里有一些相关的代码片段,希望能帮助别人找出发生了什么!
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source);
parser.setResolveBindings(true);
CompilationUnit unit = (CompilationUnit) parser.createAST(null);
GenericVisitor visitor = new GenericVisitor(outDir + "//" + file.getName() + ".xml");
visitor.process(unit);
public class GenericVisitor extends ASTVisitor
{
public void endVisit(FieldDeclaration node)
{
String bindingInfo = "";
ITypeBinding binding = node.getType().resolveBinding();
if(binding == null)
{
System.out.println("field declaration binding = null");
}
else
{
bindingInfo = binding.getQualifiedName();
}
endVisitNode(node, bindingInfo);
}
public void endVisit(MethodInvocation node)
{
String bindingInfo = "";
IMethodBinding binding = node.resolveMethodBinding();
if(binding == null)
{
System.out.println("method binding = null");
}
else
{
bindingInfo = binding.toString();
}
endVisitNode(node, bindingInfo);
}
}
你也可以使用parser.setEnvironment(...):“设置时,没有IJavaProject可用,可用于环境” – roesslerj 2012-06-19 10:10:47