文字列に含まれるコードの実行
Java 開発者は、文字列として保存されているコードを実行する必要がある状況に遭遇することがあります。文字列変数。 Java はこのための直接的なメカニズムを提供しませんが、Java リフレクションを使用して検討できるアプローチがいくつかあります。
コンパイラ API
Java コンパイラ API を使用すると、次のことが可能になります。 Java コードの文字列を動的にコンパイルします。これを利用する方法は次のとおりです。
<code class="java">import javax.tools.JavaCompiler; import javax.tools.StandardJavaFileManager; import javax.tools.ToolProvider; // Compile the Java code string String javaCode = "..."; JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null); JavaCompiler.CompilationTask task = compiler.getTask(fileManager, null, null, null, null, javaCode); task.call();</code>
Beanshell
Beanshell は、Java コードを動的に実行できるオープンソースのスクリプト言語です。これは、Java コード文字列を評価するために使用できます。
<code class="java">import bsh.Interpreter; // Execute the Java code string using Beanshell String javaCode = "..."; Interpreter interpreter = new Interpreter(); interpreter.eval(javaCode);</code>
Reflection
Java リフレクションを使用すると、クラスとメソッドを動的に操作して呼び出すことができます。これを使用して、Java コード文字列で定義されたクラスのインスタンスを作成し、そのメソッドを呼び出すことができます。
<code class="java">import java.lang.reflect.Constructor; import java.lang.reflect.Method; // Create a class instance based on the Java code string String className = "..."; Class<?> clazz = Class.forName(className); Constructor<?> constructor = clazz.getConstructor(); Object instance = constructor.newInstance(); // Invoke a method on the class instance String methodName = "..."; Method method = clazz.getMethod(methodName); method.invoke(instance);</code>
これらは、Java の文字列に含まれるコードを動的に実行する方法のほんの一部です。選択する具体的なアプローチは、要件とプロジェクトのアーキテクチャによって異なります。
以上がJava で文字列として保存されたコードを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。