java - 您可以使用 Java 反射在运行时定义和调用方法吗?

标签 java reflection

我只读过一些有关反射的知识,所以我真的了解不多。

我正在构建一个程序(类任务),用户在提供的文本框中编写方法实现,然后应该调用该方法实现。 我想知道这是否可以使用反射来完成?或者有什么不同的方法吗?

最佳答案

虽然确实有可能实现您所描述的内容,但使用脚本语言来实现此类动态表达式要容易得多。 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/

相关文章:

c# - (C#) 如何根据name字段存值?

c# 4.0 使用(指定的属性和 attribute.data)获取类属性

java - 将一组字符串映射到特定的键值

java - Java中一个方法调用另一个方法

java - 如何根据属性的值获取属性的名称?

c# - 序列化和反序列化域事件以在通用实现中持久化并从事件存储中检索

c# - 将 CsvHelper 自定义转换器应用于一组类的所有字符串属性

java - 通过菜单子(monad)项 onclick 更改 textview 的字体

java - 无法使用椭圆曲线 (EC) 加密技术签署 JWT

java - 如何使用 itext7 将页面从一个 PdfDocument 复制到另一个 PdfDocument