Java脚本引擎类实例化

Java脚本引擎类实例化,java,javascript,scripting,Java,Javascript,Scripting,我正在尝试在应用程序中实现脚本端点,但我遇到了一个问题: 是否可以用实现的方法实例化作为抽象类实例的对象?在Java中,它看起来像: SimpleObject obj = new SimpleObject("contructor arg0") { public void doCustomAction() { System.out.println("Action"); } } SimpleObject是一个抽象类,具有抽象方法doCustomAction 如何通过J

我正在尝试在应用程序中实现脚本端点,但我遇到了一个问题: 是否可以用实现的方法实例化作为抽象类实例的对象?在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
javax.script.ScriptException:sun.org.mozilla.javascript.internal.EvaluatorException:
实例化错误(JavaAdapter:第一个参数应该是接口类(#1)):
类SimpleObject是第1行中的接口或抽象(#1)

您可以在Java中扩展抽象类,就像它的接口一样,然后在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.
    }
});
编辑: 您可以在没有“适配器”的情况下执行此操作,只需执行以下操作:

obj1 = new JavaAdapter(Packages.SimpleObject, {
   doCustomAction: function(){
      //Do smth.
   }
});