【发布时间】:2012-07-25 05:29:18
【问题描述】:
我发现了一些关于使用 Mozilla 的 Rhino 在 Javascript 和 Java 之间改组类定义的问题。我已经走得够远了:
Javascript:
new JavaAdapter(MyClass, {foo: function(){return 'Hello!';}});
Java
String script = // the above stuff
Object o = context.evaluateString(scope, script, "UserScript", 1, null);
MyClass mc = (MyClass) Context.jsToJava(o, MyClass.class);
mc.foo(); // returns "Hello!"
这让我大吃一惊,但我想将 JavaAdapter 结构从 Javascript 转移到 Java 端。我正在编写一个框架,用户将在其中定义 Javascript 逻辑,并且他们必须粘贴的样板越少,他们就会越快乐。
理想情况下,我可以这样做:
Javascript:
{foo: function(){return 'Hello!';}};
Java
String script = // the above stuff
Object o = context.evaluateString(scope, script, "UserScript", 1, null);
MyClass mc = new JavaAdapter(MyClass.class, o);
mc.foo(); // returns "Hello!"
但据我所知,JavaAdapter 构造函数不带任何参数,任何地方都没有该类的文档(例如,它不是here),而且我还没有找到任何静态方法(例如Context 或 ScriptableObject) 创建了这样一个类。我也试过Context.jsToJava(o, MyClass.class),但抛出了异常。
【问题讨论】:
标签: java javascript rhino