2012-04-25 61 views
3

有没有什么方法可以比较MethodDeclaration对象和IMethod对象并检查它们是否相似?或者有什么方法可以将MethodDeclaration对象转换为IMethod对象(IMethod提供了isSimilar函数)?检查MethodDeclaration是否与IMethod相似

更新: Similarly我想知道是否FieldDeclaration可以转换为IField。

回答

2

MethodDeclaration是一个ASTNode,而IMethod是一个JavaElement。检查这两个对象是否对应相同方法的最终方法是比较它们的绑定。关于如何获取ASTNode和JavaElement的绑定,请参阅http://wiki.eclipse.org/JDT/FAQ#From_an_ASTNode_to_an_IBinding和​​。一旦你有绑定或绑定键,你可以比较一下。

+0

非常感谢。我能够使用'IMethod method =(IMethod)methoDeclarationNode.resolveBinding()。getJavaElement();从MethodDeclaration中提取IMethod;'然后使用isSimilar方法比较两个IMethod。 但FieldDeclaration没有resolveBinding方法。在提供的链接中提到可以使用ASTParser.createBindings创建一个IBinding,但这需要一个progressMonitor。进度监视器可以指定为空吗? – 2012-04-26 03:33:01

+0

也可以让你知道,如何可以从FieldDeclarationNode获取绑定密钥。没有关于寻找AST节点的javaElement的FAQ。 – 2012-04-26 04:06:14

+0

是的,进度监视器可以为空。 – 2012-04-26 06:59:15