Warum gibt resolveBinding () null zurück, obwohl ich auf meinem ASTParserResolveBindings (true) gesetzt habe?

Ich schreibe ein Eclipse-Plug-In, das JDT ASTs verwendet.ASTParser, um eine Methode zu analysieren. Ich suche in dieser Methode nach der Erstellung eines bestimmten Objekttyps.

Wenn ich ein @ finClassInstanceCreation, Ich rufegetType()licken Sie auf @, um zu sehen, welcher Typ instanziiert wird. Ich möchte sichergehen, dass es sich bei dem vollständig aufgelösten Typ, der dort behandelt wird, um den handelt, von dem ich denke, dass er es isType Objekt zuresolveBinding(). Ich bekommenull zurück obwohl es keine Kompilierungsfehler gibt und obwohl ich @ aufgerufen hasetResolveBindings(true) auf meinemASTParser. Ich gab meinASTParser (übersetSource()) dasICompilationUnit enthält meine Methode, sodass der Parser Zugriff auf den gesamten Arbeitsbereichskontext hat.

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());

Warum tutresolveBindi,ng() Rückkehrnull? Wie kann ich die verbindlichen Informationen erhalten?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage