Rumah >Java >javaTutorial >Bolehkah Java Menyusun dan Melaksanakan Kod daripada String?
Menyusun Kod Dinamik daripada Rentetan
Soalan:
Bolehkah String yang mengandungi kod ditukar kepada format yang boleh disusun dan dilaksanakan Java?
Jawapan:
Ya, menggunakan Java Compiler API. Begini caranya:
Dalam Java 6 atau lebih baru, gunakan kelas JavaCompiler untuk menyusun kod secara dinamik.
Kod:
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();
Nota:
Atas ialah kandungan terperinci Bolehkah Java Menyusun dan Melaksanakan Kod daripada String?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!