是否可以通過AST獲取類聲明的全部信息(使用modifiers
,extends
和implements
)???獲取類聲明
我希望得到一個結構是這樣的:
[ modifiers ] class ClassName [ extends SuperClassName ] [ implements InterfaceNames ] {
感謝您的信息!
是否可以通過AST獲取類聲明的全部信息(使用modifiers
,extends
和implements
)???獲取類聲明
我希望得到一個結構是這樣的:
[ modifiers ] class ClassName [ extends SuperClassName ] [ implements InterfaceNames ] {
感謝您的信息!
在Java中它是相當難以得到的價值,但你可以得到的東西,如: -
Class Modifiers
: - 如果你能夠使這個類的對象比它是一個公共類別的人
Extends
: - 你必須檢查覆蓋方法。
Implements
: - 您必須檢查類中的抽象方法才能知道。否則那個類將是抽象類
。
你不需要像這樣的反射。
使用java.lang.Class API
Class clsObj = Class.forName("yourclas");
方法,比如,
getModifiers();
getSuperClass();
getInterfaces();
正如TheWhiteRabbit提到的,你可以使用反射從java.lang.Class類開始或者也許你正在尋找一個代碼分析器等如antlr。 請注意,您的問題似乎已被要求here。
我知道如何使用AST解析代碼以及如何使用節點「TypeDeclaration」獲取類的信息。我想獲得的唯一信息是類聲明,只是「標題」。做.getName我只得到ClassName,我想修改器,擴展和實現。有什麼想法? – Jose 2013-02-28 13:39:40
如果你能告訴你正在使用哪個AST框架,那該多好啊! Eclipse JDT?這似乎不是簡單的Java反射。我錯了嗎。我必須承認我對JTD的使用經驗有限,但superInterfaces()和getSuperclass()方法不應該爲您提供幫助嗎? – 2013-02-28 16:05:27
是的。我正在使用AST的Eclipse API,並且superInterfaces()和getSuperclass()方法很有用,但是有什麼辦法可以一步獲得整個類聲明信息嗎? 我想要這樣的事情: public class GetInfo extends AbstractHandler { – Jose 2013-03-01 11:07:49
你的意思是反思? http://docs.oracle.com/javase/tutorial/reflect/class/classModifiers.html – 2013-02-27 11:08:19
如何提供更多信息,並嘗試使用它的答案?它會質量... – mliebelt 2013-02-27 11:14:01