2013-02-27 153 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