如标题所述,我想要实现的目标如下:
我正在使用java中包含的脚本。 如果有人可以帮助我,我会很高兴。
答案 0 :(得分:5)
如果您正在使用ScriptEngine框架,这非常简单。您可以通过两种方式将Java对象“传递”到JavaScript:
您还可以从JavaScript访问Java构造函数,并根据需要实例化Java对象。
要做第一件事,您必须为脚本引擎设置“绑定”。它就像一张地图:
final Bindings globals = engine.createBindings();
globals.put("foo", yourObject);
现在,当JavaScript代码在该引擎中运行时,全局符号“foo”将用作对Java对象的引用。您可以根据需要绑定任意数量的引用。
如果要将Java对象作为参数传递给JavaScript函数,首先需要的是调用 JavaScript函数的方法。为此,您使用“Invocable”接口公开的“invokeFunction”或“invokeMethod”方法:
final Object result = ((Invocable) engine).invokeMethod(context, methodName, arg, arg, ... );
“context”只是对你想要this
在被调用的函数中引用的东西的引用。 “methodName”只是一个字符串,给出了全局JavaScript函数的名称。
JavaScript环境可通过其完全限定的路径名使用Java类:
var javaHashMap = new java.util.HashMap();
这会给你一个Java HashMap实例作为JavaScript变量。