首页 > Java > java教程 > Java 可以编译并执行字符串中的代码吗?

Java 可以编译并执行字符串中的代码吗?

Barbara Streisand
发布: 2024-12-02 13:40:16
原创
536 人浏览过

Can Java Compile and Execute Code from a String?

从字符串编译动态代码

问题:

包含代码的字符串可以是转换为可以编译和执行的格式Java?

答案:

是的,使用 Java 编译器 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 表达式存储在数据库字段中,并适当引用变量 a 和 b。

以上是Java 可以编译并执行字符串中的代码吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板