假设我有以下代码
class A{
public void f(int i, int j){
// line
}
}
我想做的是
i + j
,从某处,使用JDT解析器解析字符串并获得类型为Expression
的AST;和Expression
AST的类型并获取其类型int
。1和2似乎很容易。但我无法弄清楚如何在JDT中完成3。有人有什么想法吗?
感谢。
答案 0 :(得分:0)
您必须使用bindings(不推荐使用链接,但信息仍然有效)。
注意:how binding resolving is activated - 我给出的答案。
如果有可用的绑定,您可以执行以下操作:
Expression expr = ...;
ITypeBinding binding = expr.resolveTypeBinding();
// binding is e.g. 'int' for 'i + j';
注意:要拥有有效的Java代码,必须插入语句而不是表达式。所以一个天真的方法可能是:
将表达式添加为语句,例如Object $expr = i + j;
保存类型绑定binding = expr.resolveTypeBinding() // e.g. ITypeBinding 'int';
将Object $expr
占位符替换为binding
的类型 - 从binding
返回ASTNode
(最有可能PrimitiveType
)必须手动完成
如果您需要一个简单的代码示例,请询问。