2014-07-11 50 views
0

我有一个任务,我需要编写解析.class文件,并检索喜欢的东西Java程序:在java文件的类文件解析器

1.name

2.implemented接口

3.variables

4.constructors

5.methods

我没有任何ideeas从哪里开始? 例如,我应该使用什么样的数据I/O结构?

+0

你能详细一点吗? – tudoricc

+0

我看了你刚刚提到的术语,我想我有点理解 – tudoricc

+0

嘿,对不起,我很快就删除了我的评论。我犹豫了,因为你提到一个.class文件,我认为你必须解析字节码。 Java“反射”是一种API,它允许您获取某个类的信息,甚至可以设置该类的受保护字段和方法的可访问性。 – Unihedron

回答

3

您可以使用Java反射。这里是一个很好的教程 - >

Java Reflection Tutorial

+0

非常感谢你 – tudoricc

+4

-1。反思需要你实际加载和执行这个类。不完全是类文件解析器。 – Antimony

1
  • 你行你ClassParser这是Apache的公共图书馆提供。你可以阅读Javadoc here。您可以从here
  • 下载Apache公地您还可以使用Java反射API提供的方法,如getDeclaredFiledsgetDeclaredMethods
0

目前已经为类文件中解析出有几个库。 Objectweb ASM是最流行的。

如果你必须从头开始,我建议从JVM specification开始,详细解释了类文件的二进制布局。之后,解析只是一个简单的编程问题。我以前写过一个类文件解析器,并不难。

0

您不需要任何外部库,只需使用java.lang.Class即可。写下你的班级名称:

[NameOfMyClass].class.getDeclaredFields(); 
[NameOfMyClass].class.getDeclaredConstructors(); 
[NameOfMyClass].class.getDeclaredMethods(); 

接口和许多其他属性是一样的。