ホームページ > Java > &#&チュートリアル > Java は文字列からコードをコンパイルして実行できますか?

Java は文字列からコードをコンパイルして実行できますか?

Barbara Streisand
リリース: 2024-12-02 13:40:16
オリジナル
548 人が閲覧しました

Can Java Compile and Execute Code from a String?

文字列からの動的コードのコンパイル

質問:

コードを含む文字列は可能ですか?でコンパイルおよび実行できる形式に変換されます。 Java?

答え:

はい、Java コンパイラ API を使用します。その方法は次のとおりです。

Java 6 以降では、JavaCompiler クラスを利用してコードを動的にコンパイルします。

コード:

String comparableClassName = ...;
String comparatorClassName = ...;
String source = "public class " + comparatorClassName + " implements Comparable<" + comparableClassName + "> {" +
                "    public int compare(" + comparableClassName + " a, " + comparableClassName + " b) {" +
                "        return " + expression + ";" +
                "    }" +
                "}";

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

/*
 * Refer to the JavaCompiler JavaDoc page for examples of the following objects (most can remain null)
 */
Writer out = null;
JavaFileManager fileManager = null;
DiagnosticListener<? super JavaFileObject> diagnosticListener = null;
Iterable<String> options = null;
Iterable<String> classes = null;
Iterable<? extends JavaFileObject> compilationUnits = new ArrayList<>();
compilationUnits.add(
    new SimpleJavaFileObject() {
        // See JavaDoc page for more details on loading the source String
    }
);

compiler.getTask(out, fileManager, diagnosticListener, options, classes, compilationUnits).call();

Comparator comparator = (Comparator) Class.forName(comparableClassName).newInstance();
ログイン後にコピー

注:

  • コンパイル任意のコードはセキュリティに影響を与える可能性があります。
  • 変数 a および b への適切な参照を使用して、Java 式をデータベース フィールドに保存します。

以上がJava は文字列からコードをコンパイルして実行できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート