2

JDT を使用して Java パーサーを実装してきましたが、ノードの型がVariableDeclarationFragmentの場合に変数の型を取得する方法がわかりません。

VariableDeclarationに関してのみ、変数の型を取得する方法を見つけました

私のコードは次のとおりです。

public boolean visit(VariableDeclarationFragment node) {
    SimpleName name = node.getName();

    System.out.println("Declaration of '" + name + "' of type '??');

    return false; // do not continue 
}

誰でも私を助けることができますか?

4

3 に答える 3

1

これは最善のタイプ セーフ ソリューションではないかもしれませんが、私の場合はうまくいきました。
toString() メソッドを呼び出して、ノードで処理されている型を抽出しているだけです。

    public boolean visit(VariableDeclarationFragment node) {
            SimpleName name = node.getName();
            String typeSimpleName = null;

            if(node.getParent() instanceof FieldDeclaration){
                FieldDeclaration declaration = ((FieldDeclaration) node.getParent());
                if(declaration.getType().isSimpleType()){
                    typeSimpleName = declaration.getType().toString();
                }
            }

            if(EXIT_NODES.contains(typeSimpleName)){
                System.out.println("Found expected type declaration under name "+ name);
            }

            return false;
    }

ノードのタイプのチェックと、クラスの単純な名前の EXIT_NODE リストの前の宣言の助けを借りて、正しい場所にいるというかなりの自信を与えてくれます。

少しHTH。

于 2016-05-16T09:58:54.430 に答える
0

JDT API docsVariableDeclarationFragmentextendsによるとVariableDeclaration、同じメソッドを使用してどちらのタイプも取得できます。

于 2013-08-26T23:46:56.723 に答える