次のように定義された既存の抽象基本クラスの匿名サブクラスによって、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() を呼び出すと、必要なサブクラスのインスタンスが作成されます。しかし、実際には、コンストラクター パラメーターとメソッド実装の両方を指定してコンストラクターを呼び出す必要があります。