使用javax.tools.JavaCompiler
和javax.tools.ToolProvider
,我在一个大字符串中包含一个预定义类的用户输入字符串(应该是一个方法)并在我的代码中执行它。有没有办法(在同一个代码中)实例化编译的类(因为它在运行时不存在)来测试具有预定义案例集的函数?
示例:提示用户编写一个方法,该方法返回作为参数发送给它的相反布尔值。
所述方法中的用户类型。
我在方法周围包装了一个泛型类,并使用一组预定义的测试用例(true,false)来检查它的功能(应该得到错误,真实的回复)
答案 0 :(得分:1)
或许,通过将生成的类读入byte[]
并使用Classloader.defineClass(..)来解析/构造Class对象。要正确解析该类,此类引用的所有资源都应该可用于您正在使用的类加载器实例。获得Class对象后,可以实例化它并使用reflection调用该方法。