有没有办法从字符串解析表达式并使用JDT在作用域中解析其类型?

时间:2016-05-20 13:19:00

标签: java eclipse-jdt

假设我有以下代码

class A{
  public void f(int i, int j){
    // line
  }
}

我想做的是

  1. 使用JDT解析器解析代码;
  2. 取一个输入字符串,例如i + j,从某处,使用JDT解析器解析字符串并获得类型为Expression的AST;和
  3. 解析Expression AST的类型并获取其类型int
  4. 1和2似乎很容易。但我无法弄清楚如何在JDT中完成3。有人有什么想法吗?

    感谢。

1 个答案:

答案 0 :(得分:0)

您必须使用bindings(不推荐使用链接,但信息仍然有效)。

注意:how binding resolving is activated - 我给出的答案。

如果有可用的绑定,您可以执行以下操作:

Expression expr = ...;
ITypeBinding binding = expr.resolveTypeBinding();
// binding is e.g. 'int' for 'i + j';

注意:要拥有有效的Java代码,必须插入语句而不是表达式。所以一个天真的方法可能是:

  1. 将表达式添加为语句,例如Object $expr = i + j;

  2. 保存类型绑定binding = expr.resolveTypeBinding() // e.g. ITypeBinding 'int';

  3. Object $expr占位符替换为binding的类型 - 从binding返回ASTNode(最有可能PrimitiveType)必须手动完成

  4. 如果您需要一个简单的代码示例,请询问。