オペレーティング システムのファイル システムにファイルを作成して格納することなく、実行時に Java クラスをコンパイルしてロードする方法はありますか?
Java クラスの文字列表現を含むデータベース レコードがあるとします。その文字列を Java メモリにプルします。私の目標は、その文字列を 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{}"));
?