2013-02-27 77 views
0

是否可以通過AST獲取類聲明的全部信息(使用modifiers,extendsimplements)???獲取類聲明

我希望得到一個結構是這樣的:

[ modifiers ] class ClassName [ extends SuperClassName ] [ implements InterfaceNames ] { 

感謝您的信息!

+1

你的意思是反思? http://docs.oracle.com/javase/tutorial/reflect/class/classModifiers.html – 2013-02-27 11:08:19

+0

如何提供更多信息,並嘗試使用它的答案?它會質量... – mliebelt 2013-02-27 11:14:01

回答

0

在Java中它是相當難以得到的價值,但你可以得到的東西,如: -

Class Modifiers: - 如果你能夠使這個類的對象比它是一個公共類別的人

Extends: - 你必須檢查覆蓋方法。

Implements: - 您必須檢查類中的抽象方法才能知道。否則那個類將是抽象類

0

你不需要像這樣的反射。

使用java.lang.Class API

Class clsObj = Class.forName("yourclas");

方法,比如,

getModifiers(); 
getSuperClass(); 
getInterfaces(); 
0

正如TheWhiteRabbit提到的,你可以使用反射從java.lang.Class類開始或者也許你正在尋找一個代碼分析器等如antlr。 請注意,您的問題似乎已被要求here

+0

我知道如何使用AST解析代碼以及如何使用節點「TypeDeclaration」獲取類的信息。我想獲得的唯一信息是類聲明,只是「標題」。做.getName我只得到ClassName,我想修改器,擴展和實現。有什麼想法? – Jose 2013-02-28 13:39:40

+0

如果你能告訴你正在使用哪個AST框架,那該多好啊! Eclipse JDT?這似乎不是簡單的Java反射。我錯了嗎。我必須承認我對JTD的使用經驗有限,但superInterfaces()和getSuperclass()方法不應該爲您提供幫助嗎? – 2013-02-28 16:05:27

+0

是的。我正在使用AST的Eclipse API,並且superInterfaces()和getSuperclass()方法很有用,但是有什麼辦法可以一步獲得整個類聲明信息嗎? 我想要這樣的事情: public class GetInfo extends AbstractHandler { – Jose 2013-03-01 11:07:49