这与 this other SO question about arrays 非常相似.
如果我评估:
y = {a: 1, b: 2, "momomomo": function() { return "hi"; }, zz: "wham"}
在通过 JSR223 (ScriptingEngine) 实例化的 Javascript 脚本中,我得到 NativeObject
某种类型的(我在 Eclipse 的调试器中看到这一点)并且不知道如何访问其属性。此外,我什至不知道哪个 .jar 文件(如果有)需要添加到我的构建路径中才能使用相关类,并且如果我找到一种适用于 Rhino Javascript 的方法,那么它对于Jython。
似乎 JSR223 应该包含对 ScriptingEngine 的与语言无关的访问方法,以提供将返回的对象包装为 List<Object>
的能力。对于数组或 Map<String, Object>
对于关联数组。
有什么建议吗?
最佳答案
我也尝试嵌入具有比 jsr223 或 bsf 更多功能的不同脚本语言。为此,我必须定义自己的接口(interface)并围绕每个不同的脚本引擎实现这些接口(interface)。
我想要的一个功能是能够将函数(具有单个方法的 java 接口(interface))传递给我的脚本引擎,并让它在传递参数时正常工作。我的每个嵌入式脚本引擎都有一个层,我可以在其中从脚本环境中包装/解开 java 值。
我建议解决问题的最佳方法是让脚本引擎的包装器提供 getValue( String name ) 并让它修复 javascript 数组,将它们转换为 java 列表。当然,setValue(String, Object) 会检查该值是否是一个 List 并将其转换回 js 数组等等。很乏味:()
关于java - Rhino 和 Java 通过 JSR223 进行互操作 : working with Javascript Object instances,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5599197/