2013-10-31 84 views
3

我使用Eclipse的AST分析器來解析獨立的Java文件。這是我下面的代碼重寫,以獲得CompilationUnit(即Java的文件)的詳細信息:AST Parser獲取Java類的名稱

@Override 
public boolean visit(CompilationUnit node) { 
    System.out.println("Compilation unit: " + node.getPackage().getName()); 
    System.out.println("Imports: " + node.imports()); 
    System.out.println("Class Name: " + ??); //How to get this? 
    return super.visit(node); 
} 

正如你可以從上面的代碼看,我能得到包名,進口等來自CompilationUnit。但我面臨的主要問題是,我無法獲得該班的名字。我試過打印node.toString()它打印完整的源代碼,我試着用node.getClass();,但它返回我的名字爲CompilationUnit。我想要的是我正在解析的文件類的名稱。有沒有任何內置的方法使用我可以得到這個信息?

+0

嗨Pradeep,你知道了嗎。你能告訴我你是如何得到類名的嗎?謝謝! Sangeeta – Sangeeta

+0

@Sangeeta是的,我問了這麼久,我需要檢查我的舊代碼。會讓你知道 –

回答

3

在Java中,編譯單元不等於單個類。

例如,您可以定義多個類(使用包私有訪問)。另一方面,在編譯單元中並不總是有一個公共類(限制是你可能只有一個公共類,如果有的話,它的名稱必須與編譯單元的名稱相同)。

我相信你應該用你的CompilationUnit上的接受過程來處理,並且也可以爲類編寫visit()方法。

+0

好的謝謝。現在我明白了。 –