我正在使用Java AST。如何获取FieldDeclaration或VariableDeclaration的类型(例如String或MyOwnType)?在ASTView中,我可以在SimpleName>类型绑定下看到它,但是使用getter时,我无法到达该成员。
我尝试了FieldDeclaration to IField - Getting IBinding from FieldDeclaration中的解决方案,但是在访问FieldDeclaration时resolveBinding返回null。

Why does resolveBinding() return null even though I setResolveBindings(true) on my ASTParser?也不起作用

最佳答案

哇,这很难。
最后一行使解析绑定和通过varDeclFrag.resolveBinding().getType().getQualifiedName();检索类型成为可能,尽管我已经以为我在引用sources时在setEnvironment中做了相同的事情:

String[] sources = { "C:\\a\\TheMightyExampleProject\\src" };
String[] classPaths = { "C:\\a\\antlr-4.1-complete.jar" };

parser.setEnvironment(classPaths, sources, new String[] { "UTF-8" }, true);
parser.setBindingsRecovery(true);
parser.setResolveBindings(true);
parser.setCompilerOptions(options);
parser.setStatementsRecovery(true);
parser.setUnitName("C:\\a\\TheMightyExampleProject\\src"); // ftw


您还可以查看Ida bindings not resolving with AST processing in eclipse的答案

07-24 09:18