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

我刚刚弄清楚如何从 VariableDeclarationFragment 获取类型。我只需要获取它的父级,它是一个 FieldDeclaration,然后我就可以访问它的变量类型。

于 2013-11-17T22:38:36.903 回答
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 回答