我正在编写一个使用 JDT ASTASTParser
解析方法的 Eclipse 插件。我正在该方法中寻找创建特定类型对象的方法。
当我找到 aClassInstanceCreation
时,我会调用getType()
它来查看正在实例化的类型。我想确保正在处理的完全解析的类型是我认为的那个,所以我告诉结果Type
对象到resolveBinding()
. null
即使没有编译错误,即使我调用了setResolveBindings(true)
我的ASTParser
. 我给了我的ASTParser
(通过setSource()
)ICompilationUnit
包含我的方法的,所以解析器可以访问整个工作区上下文。
final IMethod method = ...;
final ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setSource(method.getCompilationUnit());
parser.setSourceRange(method.getSourceRange().getOffset(), method.getSourceRange().getLength());
parser.setKind(ASTParser.K_CLASS_BODY_DECLARATIONS);
final TypeDeclaration astRoot = (TypeDeclaration) parser.createAST(null);
final ClassInstanceCreation classInstanceCreation = walkAstAndFindMyExpression(astRoot);
final Type instantiatedType = classInstanceCreation.getType();
System.out.println("BINDING: " + instantiatedType.resolveBinding());
为什么resolveBinding()
返回null
?如何获取绑定信息?