所以我有这个界面
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”(因为没有更好的词)或编程语言可以让我绕过 Type Erasure?因为我没有使用旧版本的 Java,所以我不关心我的代码是否与旧代码兼容。
在 Java 语言中是否有任何解决方法可以用来绕过类型擦除?
如果不是,有哪些替代方法可以在我的程序中编写事件处理代码以使编译器满意?