犀牛

2010-07-01 107 views
2

匿名實現抽象類的,我需要通過現有的抽象基類的匿名子類,像這樣定義爲實現在JavaScript監聽器:犀牛

public class Speaker { 
    public static abstract class MyListener { 
    private String name; 
    public MyListener(final String name) { this.name = name; } 
    public abstract boolean listen(final String words); 
    } 
} 

在java中,實施監聽器匿名子類實現:

MyListener newListener = new MyListener("George") { 
    public boolean listen(final String words) throws Exception { Thread.sleep(500); } 
} 

如果我嘗試這樣做,在JavaScript中,我不能叫抽象基類的構造函數,並在同一時間實現虛擬功能。

它工作,如果我刪除構造函數參數,然後調用MyListener()與方法實現作爲參數創建我需要的子類的實例。但我實際上需要調用的構造函數的構造函數參數的方法實現。

+0

我不清楚你是如何在這個問題上涉及Javascript的。你能提供一個你嘗試過的*不能工作的例子嗎? – Pointy 2010-07-01 12:11:14

+0

我有用Java編寫的可編寫腳本的應用程序。我可以使用JS控制檯進行一些操作(通過調用我的應用程序類的方法)。我想編寫一個腳本來處理這個應用程序的一些事件,但爲此我需要實現一個監聽器。 什麼不起作用:我不能在Rhino中編寫「x = Speaker.MyListener(」George「,function(words){sleep();})」:JS控制檯獲取一個InvocationTargetException,並退出。 – 2010-07-01 13:35:47

回答