【发布时间】:2017-12-20 00:31:00
【问题描述】:
我正在使用 eclipse JDT AST 解析器来处理一些 Java 代码,并尝试提取字段和方法声明的类型绑定。这样做的逻辑在我的访问者类中(见下文)。不幸的是,我没有任何运气,并且没有任何绑定正在解决(它们始终为空)。有趣的是,绑定确实使用 eclipse ASTView 插件在相同的代码上工作。我做错了什么?
这里有一些相关的代码 sn-ps,希望能帮助人们弄清楚发生了什么!
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);
}
}
【问题讨论】: