Menukar Rentetan kepada Kod Java
Seorang pembangun berusaha untuk menukar rentetan yang disimpan dalam pangkalan data kepada kod kompilasi Java, bertujuan untuk menggunakannya dalam struktur bersyarat.
Satu penyelesaian yang dicadangkan ialah memanfaatkan API Pengkompil Java, khususnya Kelas JavaCompiler tersedia dalam Java 6. Menggunakan API ini, pembangun boleh membina kod sumber untuk objek Comparator dalam ingatan.
Amaran: Menggunakan API JavaCompiler memerlukan kehati-hatian, kerana menyusun Java sewenang-wenangnya kod boleh menimbulkan tertentu risiko.
Pelaksanaan:
String comparableClassName = ...; // Define the class to be compared String comparatorClassName = ...; // Assign a distinct name to prevent conflicts String source = "public class " + comparatorClassName + " implements Comparable<" + comparableClassName + "> {" + " public int compare(" + comparableClassName + " a, " + comparableClassName + " b) {" + " // Replace 'expression' with the desired comparison logic" + " return " + expression + ";" + " }" + "}"; // Obtain the necessary objects from the JavaCompiler API JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); // Configure the compilation process as per the API guidelines Writer out = null; JavaFileManager fileManager = null; DiagnosticListener<? super JavaFileObject> diagnosticListener = Iterable<String> options = null; Iterable<String> classes = null; Iterable<? extends JavaFileObject> compilationUnits = new ArrayList<? extends JavaFileObject>(); compilationUnits.add( new SimpleJavaFileObject() { // As described in the API documentation, load the 'source' string as the source code } ); // Initiate the compilation process compiler.getTask(out, fileManager, diagnosticListener, options, classes, compilationUnits).call(); // After compilation, instantiate the Comparator Comparator comparator = (Comparator) Class.forName(comparableClassName).newInstance(); // Utilize the 'comparator' for comparing objects based on the pre-defined logic
Nota: Untuk penyelesaian ini berfungsi, ungkapan Java yang sesuai hendaklah disimpan dalam medan pangkalan data , menggunakan 'a' dan 'b' sebagai rujukan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengumpul Rentetan daripada Pangkalan Data ke dalam Pembanding Java Menggunakan API Pengkompil Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!