如何从给定的.java文件中实例化类java.lang.Class
的对象?
我想创建一个自动生成JUnit测试的应用程序。为此,我需要“方法”对象,对于“方法”对象,我需要一个“类”对象。
答案 0 :(得分:6)
java 6 onwards为编译器提供了api:http://www.javabeat.net/2007/04/the-java-6-0-compiler-api/
上面的链接包含一个示例。
加载文件,编译后使用类加载器。在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(参见&#34中的最后一句;什么是Janino"段落。)
对不起之前的谷歌嗤之以鼻。
它让我印象深刻,也许你只想要一个类对象。
如果您有一个名为MyClass的类,则关联的类为Myclass.class
。这可能是显而易见的,但也许这就是你所需要的。
如果您在字符串中有类名,则可以使用此方法 - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName(java.lang.String)
答案 1 :(得分:1)
如果您确实知道完整的类String名称,为什么不使用Class.forName(className)方法来获取类Object?
例如,如果类名为yakam.yale.MyClass
,则只需调用
Class.forName("yakam.yale.MyClass");
然后玩游戏!