Java ソース コードを分析するための Eclipse プラグインを開発しています。AST ツリー全体をトラバースし、各 variableDeclartionStatement にアクセスするためのビジターを記述します。一部の変数では、「resolvebinding」が 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());
}
}
}
}
私の質問は次のとおりです。バインドを解決できる変数宣言と、解決できない変数宣言をどのように区別できますか?
よろしくお願いします