如何java.lang.Class
从给定的 .java 文件中实例化类的对象?
我想创建一个应用程序来自动生成 JUnit 测试。为此,我需要“方法”对象,而对于“方法”对象,我需要有一个“类”对象。
如何java.lang.Class
从给定的 .java 文件中实例化类的对象?
我想创建一个应用程序来自动生成 JUnit 测试。为此,我需要“方法”对象,而对于“方法”对象,我需要有一个“类”对象。
java 6 以后有一个用于编译器的 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-有另一个例子深度.html
你会认为会有一个图书馆来简化这一切。我找不到,但我还在找。
同时,这是来自 ibm 的一篇非常好的文章,它编译了一个函数并绘制了它 - http://www.ibm.com/developerworks/java/library/j-jcomp/index.html
找到了一个 http://docs.codehaus.org/display/JANINO/Home - 这是一个简化流程的库。我建议将其配置为使用 javax.tools API(请参阅“什么是 Janino”段落中的最后一句)。
很抱歉之前的 google snark。
它让我感到震惊,也许你只想要一个类对象。
如果您有一个名为 MyClass 的类,则关联的类是Myclass.class
. 这可能很明显,但也许这就是你所需要的。
如果您在字符串中有类名,则可以使用此方法 - http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#forName(java.lang.字符串)
如果您知道完整的类 String 名称,为什么不使用 Class.forName(className) 方法来获取类 Object?
例如,如果类名是yakam.yale.MyClass
,只需调用
Class.forName("yakam.yale.MyClass");
游戏开始了!