使用javax.tools.JavaCompiler
和javax.tools.ToolProvider
,我用预定义的类包装用户输入字符串(应该是一个方法)全部都在一个大字符串中并在我的代码中执行它。有没有办法(在相同的代码中)实例化已编译的类(因为它直到运行时才存在)以使用一组预定义的情况测试所述函数?
示例:提示用户编写一个方法,该方法返回作为参数发送给它的相反 boolean 值。
用户在所述方法中键入。
我在该方法周围封装了一个泛型类,并使用一组预定义的测试用例(true、false)来检查其功能(应该返回 false、true)
最佳答案
也许,通过将生成的类读入byte[]
并使用Classloader.defineClass(..)解析/构造一个 Class 对象。要正确解析该类,该类引用的所有资源都应该可供您正在使用的类加载器实例使用。一旦有了 Class 对象,您就可以实例化它并使用 reflection 调用该方法。 。
关于java 执行之间的 Java 字符 IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8100280/