我一直在用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
}
任何人都可以帮助我吗?
答案 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 docs,VariableDeclarationFragment
扩展VariableDeclaration
,因此您可以使用相同的方法获取任何一种类型。