2011-10-19 31 views
2

我試圖在我們的應用程序中實現腳本端點,但我有一個問題: 是否有可能通過實現的方法實例化一個抽象類實例的對象?在Java它看起來像: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 

回答

2

你可以擴展你的抽象類在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. 
    } 
}); 

編輯: 你能做到這一點沒有 「適配器」,只是做:

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