Я разрабатываю плагин Eclipse для анализа исходного кода Java. Я просматриваю все дерево AST и пишу посетителю, чтобы посетить каждую переменнуюDeclartionStatement, я заметил, что для некоторых переменных «resolbinding» возвращает экземпляр IVariableBinding, а для других - нет. Я не могу их дифференцировать. Кстати, я установил ASTParser.setKind (K_COMPILATION_UNIT) и setResolveBindings (true). Мой код выглядит следующим образом:
@Override
public boolean visit(VariableDeclarationStatement vStatement) {
Type theType = vStatement.getType();
for(Iterator iterator = vStatement.fragments().iterator();iterator.hasNext();){
VariableDeclarationFragment fragment = (VariableDeclarationFragment)iterator.next();
IVariableBinding binding = fragment.resolveBinding();
if(binding !=null){
ITypeBinding tBinding = binding.getType();
if(tBinding !=null){
// if there is ArrayType, get the root type
while(tBinding.getComponentType()!=null){
tBinding = tBinding.getComponentType();
}
System.out.println("USING BINDING VARIABLE CLASS IS: " + tBinding.getQualifiedName());
}
}
}
}
У меня вопрос: как я могу дифференцировать объявления переменных, которые могут разрешать привязки, с другими, которые не могут?
Большое спасибо заранее