Java JDT解析器。获取变量类型的VariableDeclarationFragment

时间:2013-08-26 23:32:26

标签: java eclipse-jdt

我一直在用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 
}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

我刚刚想出如何从VariableDeclarationFragment获取类型。我只需要获取它的父节点,即FieldDeclaration,然后我就可以访问它的变量类型。

答案 1 :(得分: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。

答案 2 :(得分:0)

根据JDT API docsVariableDeclarationFragment扩展VariableDeclaration,因此您可以使用相同的方法获取任何一种类型。