문자열에서 동적 코드 컴파일
질문:
코드가 포함된 문자열을 컴파일하고 실행할 수 있는 형식으로 변환됩니다. Java?
답변:
예, Java Compiler 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();
참고:
위 내용은 Java가 문자열에서 코드를 컴파일하고 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!