我只读过一些有关反射的知识,所以我真的了解不多。
我正在构建一个程序(类任务),用户在提供的文本框中编写方法实现,然后应该调用该方法实现。 我想知道这是否可以使用反射来完成?或者有什么不同的方法吗?
最佳答案
虽然确实有可能实现您所描述的内容,但使用脚本语言来实现此类动态表达式要容易得多。 JDK 仍然内置了 JavaScript 引擎,但您可以轻松添加第 3 方引擎。如果您确实希望 Java 成为动态脚本中使用的语言,一个想法是使用 JShell script engine wrapper .
无论哪种方式,方法都会像这样:
//Read the code to evaluate
String scriptCode = ...;
//Init the engine of choice
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript"); //Or "jshell" or whatever
//Add all implicit variable values (if any)
Bindings bindings = engine.createBindings();
bindings.put("variableName", variableValue);
//Execute
engine.eval(scriptCode, bindings));
BeanShell或 Groovy 是其他类似 Java 的选项。
关于java - 您可以使用 Java 反射在运行时定义和调用方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59655009/