Почему делает resolveBinding (), возвращают пустой указатель даже при том, что я setResolveBindings (верный) на моем ASTParser?

Я пишу плагин Eclipse, который использует AST JDT ASTParser проанализировать метод. Я смотрю в рамках того метода для создания конкретного типа объекта.

Когда я нахожу a ClassInstanceCreation, Я звоню 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? Как я могу получить информацию о привязке?

6
задан Woody Zenfell III 13 April 2010 в 18:09
поделиться

1 ответ

Спрятан в нижней части обзора ASTParser.setKind () , тщательно скрыт от людей, устраняющих неполадки resolveBinding () и setResolveBindings () , это оператор

Информация привязки вычисляется только тогда, когда тип равен K_COMPILATION_UNIT .

(из онлайн-документации Javadoc )

Я не понимаю, почему это так, но, похоже, он довольно ясно указывает на то, что должно быть другим!

5
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: