Java 中是否有与 Python 的 exec() 函数等效的函数?

Zac*_*acG 4 java eval

在Python中,您可以使用它exec()来执行一段代码。

有没有什么方法可以在 Java 中执行此操作,以便我可以从字符串调用函数,而且还可以执行其他操作,例如获取一些用户输入并将其作为 Java 代码运行。

注意:这与 Java 中是否有 eval() 函数不同?; 那只是eval()我想要的exec()

Tro*_*dor 6

你有几个选择

1)动态编译并加载java类

如何动态编译和加载外部java类?

就像 Peter Lawrey 建议使用 net.openhft.compiler 你可以做你想做的

https://github.com/OpenHFT/Java-Runtime-Compiler

// dynamically you can call
String className = "mypackage.MyClass";
String javaCode = "package mypackage;\n" +
                 "public class MyClass implements Runnable {\n" +
                 "    public void run() {\n" +
                 "System.out.println(\"Hello World\");\n" +
                 "     }\n" +
                 "}\n";
Class aClass = CompilerUtils.CACHED_COMPILER.loadFromJava(className, javaCode);
Runnable runner = (Runnable) aClass.newInstance();
runner.run();
Run Code Online (Sandbox Code Playgroud)

我测试了这个解决方案,它工作得很好。

观察:您需要添加项目的依赖项 ${env.JAVA_HOME}/lib/tools.jar

2) 在 Java 中使用另一种语言来解释代码,例如 Jython:

String arbitraryPythonCode = "";
PythonInterpreter interpreter = new PythonInterpreter();
interpreter.exec(arbitraryPythonCode);
Run Code Online (Sandbox Code Playgroud)

您还可以使用 Javascript、Groovy、Scala 等。