如何从java中的.java文件创建"java.lang.Class"对象

Nic*_*oks 4 java reflection junit compilation

如何java.lang.Class从给定的.java文件中实例化该类的对象?

我想创建一个自动生成JUnit测试的应用程序.为此,我需要"方法"对象,对于"方法"对象,我需要一个"类"对象.

and*_*oke 6

java 6 onwards为编译器提供了api:http://www.javabeat.net/2007/04/the-java-6-0-compiler-api/

上面的链接包括一个例子.

这是另一个例子 - http://www.java2s.com/Code/Java/JDK-6/JavaCompilertoolshowyoucancompileaJavasourcefrominsideaJavaprogram.htm

编译后加载文件使用类加载器.http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html上有一个例子,另一个例子是http://www.javaworld.com/jw-10-1996/jw-10- indepth.html

你认为会有一个库来简化这一切.我找不到一个,但我还在寻找.

同时,这是来自ibm的一篇非常好的文章,它编译了一个函数并绘制了它 - http://www.ibm.com/developerworks/java/library/j-jcomp/index.html

找到一个 http://docs.codehaus.org/display/JANINO/Home - 这是一个简化过程的库.我建议将其配置为使用javax.tools API(请参阅"什么是Janino"段落中的最后一句).

对不起之前的谷歌嗤之以鼻.


它让我感到震惊,也许你只想要一个类对象.

如果你有一个名为MyClass的类,则关联的类是Myclass.class.这可能是显而易见的,但也许这就是你所需要的.

如果您在字符串中有类名,则可以使用此方法 - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName(java.lang.字符串)

  • @NiceBooks编译.java文件不仅允许获取`java.lang.Class`对象,它是唯一的方法!JVM需要字节码,并且获取字节码的唯一方法是编译,实际上,"编译"实际意味着:生成可由JVM运行的字节码 (2认同)