【问题标题】:Get the type of a FieldDeclaration in AST获取 AST 中 FieldDeclaration 的类型
【发布时间】:2014-03-25 17:20:23
【问题描述】:

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

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

【问题讨论】:

    标签: java abstract-syntax-tree eclipse-jdt


    【解决方案1】:

    哇,这太难了。 最后一行使得通过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
    

    你也可以看看艾达bindings not resolving with AST processing in eclipse的答案

    【讨论】:

    • 很抱歉打扰了这个老问题的沉睡,但是有没有办法在不硬编码的情况下获得这些字符串数组“源”和“类路径”?我也在尝试在插件之外构建解析器,我也无法获取字段的类型。
    • 这在理论上应该如何工作? 需要告诉你的程序,而不是相反。或者我误会你了
    • 在所有关于 SO 的示例中,这一个有效。神奇之处在于在解析器环境中设置源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 2016-10-21
    • 2013-06-27
    • 2011-11-19
    相关资源
    最近更新 更多