Java で文字列として保存されたコードを実行するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-25 03:15:30
オリジナル
220 人が閲覧しました

How Can You Execute Code Stored as a String in Java?

文字列に含まれるコードの実行

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!