繁体   English   中英

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

[英]Can you use Java reflections to define and invoke a method at runtime?

我只读了一些关于反射的书,所以我真的不知道太多。

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

虽然当然可以实现您所描述的内容,但将脚本语言用于此类动态表达式要容易得多。 JDK 仍然内置了 JavaScript 引擎,但您可以轻松添加 3rd 方引擎。 如果您真的希望 Java 成为动态脚本中使用的语言,一种想法是使用JShell 脚本引擎包装器

无论哪种方式,方法都会是这样的:

//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 的选项。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM