我需要檢索一個java文件的SuperClass名稱(它擴展了一個類,我需要該類名)。爲了做到這一點,我開始使用ASTParser,但我是新手,所以任何示例或插圖都可能有所幫助。我使用ASTView來理解AST保持java文件結構的方式,但是我在嘗試visit(),endvisit()函數時卡住了。我找不到任何詳細的例子。如何使用ASTParser從java文件中檢索SuperClass名稱?
在此先感謝...
我需要檢索一個java文件的SuperClass名稱(它擴展了一個類,我需要該類名)。爲了做到這一點,我開始使用ASTParser,但我是新手,所以任何示例或插圖都可能有所幫助。我使用ASTView來理解AST保持java文件結構的方式,但是我在嘗試visit(),endvisit()函數時卡住了。我找不到任何詳細的例子。如何使用ASTParser從java文件中檢索SuperClass名稱?
在此先感謝...
你沒有說太多的你有多遠了已經。
在訪問者中,覆蓋visit(TypeDeclaration node)
,然後在該節點上調用getSuperclassType()
。
如果返回true
解析將在類型聲明內繼續,否則將停止。
您可以使用Class類的getSuperclass之()方法,在你的代碼呢?
不,實際上我devoloping一個Eclipse插件來解析所有的Java文件是選擇包下。所以我已經準備好使用ASTParser解析ICompilationUnit。我想決定我擁有哪種類型的java文件。在這個項目中,Type只能通過檢索文件擴展的超類來確定。所以我必須使用ASTParser和visit()函數。但我在這個主題上是新手。爲文件遍歷AST並從中檢索數據的任何示例都可能有所幫助。謝謝你的方式。 – Erhan 2009-07-03 14:42:42
此代碼將工作..
IType type = ...;
ITypeHierarchy a = type.newSupertypeHierarchy(new NullProgressMonitor());
IType[] superTypes = a.getAllSupertypes(type);
if(superTypes.length == 1 && superTypes[0].getKey().equals("Ljava/lang/Object;")){
this.isSuperClassObject = true;
}
else{
this.isSuperClassObject = false;
}
謝謝;它運作良好。有沒有任何網站可以詳細解釋這些訪問功能? – Erhan 2009-07-06 07:00:24