문자열을 Java 코드로 변환
개발자가 데이터베이스에 저장된 문자열을 Java 컴파일 가능한 코드로 변환하여 활용하려고 합니다. 조건부 구조에서.
제안된 솔루션 중 하나는 Java 컴파일러 API, 특히 JavaCompiler를 활용하는 것입니다. 클래스는 Java 6에서 사용할 수 있습니다. 이 API를 사용하여 개발자는 메모리에 Comparator 객체에 대한 소스 코드를 구성할 수 있습니다.
경고: JavaCompiler API를 사용하려면 임의의 Java 코드를 컴파일하므로 신중해야 합니다. 특정 포즈를 취할 수 있습니다 위험.
구현:
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
참고: 이 솔루션이 작동하려면 적절한 Java 표현식이 데이터베이스 필드에 저장되어야 합니다. , 'a'와 'b'를 참조로 사용합니다.
위 내용은 Java 컴파일러 API를 사용하여 데이터베이스의 문자열을 Java 비교기로 어떻게 컴파일할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!