Heim > Java > javaLernprogramm > Kann Java Code aus einem String kompilieren und ausführen?

Kann Java Code aus einem String kompilieren und ausführen?

Barbara Streisand
Freigeben: 2024-12-02 13:40:16
Original
536 Leute haben es durchsucht

Can Java Compile and Execute Code from a String?

Dynamischen Code aus einem String kompilieren

Frage:

Kann ein String Code enthalten? in ein Format konvertiert, das kompiliert und ausgeführt werden kann Java?

Antwort:

Ja, mit der Java Compiler API. So geht's:

Verwenden Sie in Java 6 oder höher die JavaCompiler-Klasse, um Code dynamisch zu kompilieren.

Code:

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();
Nach dem Login kopieren

Hinweis:

  • Das Kompilieren von beliebigem Code kann Sicherheit haben Implikationen.
  • Speichern Sie den Java-Ausdruck im Datenbankfeld mit entsprechenden Verweisen auf die Variablen a und b.

Das obige ist der detaillierte Inhalt vonKann Java Code aus einem String kompilieren und ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage