2012-04-25 33 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