だから私はこのインターフェースを持っています
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
そして、次のように、イベントを処理するクラスを派生させたいと思います。
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
上記の例は正常に機能します。しかし、非常に苛立たしい型消去のため、コンパイラーはEventHandlerを複数回実装することを許可しません。
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
いくつかの質問...
- Javaが型消去を許可しないのはなぜですか?IIRCは、以前のバージョンのJavaと互換性があることと関係がありますね。
編集:私はなぜJavaが型消去を持っているのかを意味します(逆にそれを持っていました)
型消去を回避するための「mod」/「extension」(より良い単語がないため)またはプログラミング言語はありますか?古いバージョンのJavaを使用していないので、コードが古いコードと互換性があるかどうかは気にしません。
Java言語内で、型消去を回避するために使用できる回避策はありますか?
いいえの場合、コンパイラを満足させるプログラムでイベント処理をコーディングするための代替方法は何ですか?