Java脚本引擎类实例化
Java Scripting Engine class instantiation
我试图在我们的应用程序中实现脚本端点,但我有一个问题:是否有可能实例化一个对象,是实现方法的抽象类的实例?在Java中,它看起来像:
SimpleObject obj = new SimpleObject("contructor arg0") {
public void doCustomAction() {
System.out.println("Action");
}
}
SimpleObject
是一个抽象类,具有抽象方法doCustomAction
如何通过Java脚本引擎做这样的事情?我正试着用下面的方法去做:
obj1 = new SimpleObject("value1") {
doCustomAction : function() {
//Do smth.
}
}
但是引擎抛出了这样的异常:
javax.script.ScriptException: sun.org.mozilla.javascript.internal.EvaluatorException:
error instantiating (JavaAdapter: first arg should be interface Class (<Unknown source>#1)):
class SimpleObject is interface or abstract (<Unknown source>#1) in <Unknown source> at line number 1
你可以在Java中扩展你的抽象类,就像MouseAdapter对它的接口所做的那样,然后在javascript中你使用这个"适配器",就像:
Java:public abstract class SimpleObject {
abstract void doCustomAction();
}
public class SimpleObjectAdapter extends SimpleObject {
void doCustomAction(){}
}
在JavaScript: obj1 = new JavaAdapter(SimpleObjectAdapter,{
doCustomAction : function() {
//Do smth.
}
});
编辑:你可以不使用"adapter",只要输入:
obj1 = new JavaAdapter(Packages.SimpleObject, {
doCustomAction: function(){
//Do smth.
}
});
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 如何在用户输入时实例化数组
- 在requirejs中共享实例化对象
- Mongoose TypeError:实例化模式类型的对象时,对象不是函数
- Angular重命名模块后未能实例化模块
- Backbone relational无法实例化两个RelationalModel对象
- 我应该如何用javascript实例化这个日期
- AngularJS出错-无法实例化模块
- 谷歌地图重叠MarkerSpiderfier实例化问题
- 未捕获错误:由于,[$injector:moduler]未能实例化模块polmgr
- ngRoute不是因果报应实例化的
- JavaScript 中的动态实例化
- 在文本框上绑定谷歌地点自动完成,而无需实例化谷歌地图
- UI5 路由不实例化视图
- 在 JavaScript 中,当我们实例化派生对象时,原型的函数隐藏在哪里
- 仅在需要时实例化聚合物元素
- 角度 JS 控制器未实例化
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 在 Typescript 中实例化对象,遵循松散耦合
- Java脚本引擎类实例化