犀牛

问题描述:

匿名实现抽象类的,我需要通过现有的抽象基类的匿名子类,像这样定义为实现在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

也许这会有所帮助:

http://download.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html#jsimplement

这是关于实现接口,但可能适用。