有没有办法在运行时编译和加载 Java 类,而无需在操作系统文件系统中创建和存储文件?
假设我有一个包含 java 类的字符串表示的数据库记录。我将该字符串拉入 Java 内存。我的目标是将该 String 编译成一个 java 类,然后加载该类。
让我说清楚。在任何操作系统中,我都不想与 .java 文件或 .class 文件有任何关系。
这可能吗?如何?
例如,下面是在运行时加载 Groovy 类并调用方法的代码:
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(new File("src/test/groovy/script/HelloWorld.groovy"));
// let's call some method on an instance
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
Object[] args = {};
groovyObject.invokeMethod("run", args);
但我们可以做类似的事情:
ClassLoader parent = getClass().getClassLoader();
GroovyClassLoader loader = new GroovyClassLoader(parent);
Class groovyClass = loader.parseClass(new String("public class GroovyClass{}"));
?