我想在 Java 中模拟一个“eval”,以便该函数接受一个字符串(一些源代码),编译它,运行它,然后返回返回值。
我知道我可以使用 JavaCompiler API 编译它,但我不确定实际运行这样的代码的最佳方法。Runtime.exec 觉得这个任务太重了……我不想每次运行这个“eval”函数时都生成另一个 java 进程,只是为了评估“30+20”之类的。这将是缓慢且资源密集型的。
最后,它必须能够运行任何 Java 代码,因此依赖 Java 内部的脚本语言评估器是行不通的(例如,如果输入是比“30+20”更复杂的 Java)
有什么选择吗?