Итак, у меня есть этот интерфейс
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 несколько раз из-за чрезвычайно разочаровывает Type Erasure.
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 есть Type Erasure (было наоборот)
Есть ли какой-то "мод"/"расширение" (из-за отсутствия лучшего слова )или языки программирования, позволяющие обойти Type Erasure? Поскольку я не использую более старые версии Java, мне все равно, совместим ли мой код со старым кодом.
Существуют ли какие-либо обходные пути в языке Java, которые можно использовать для обхода Type Erasure?
Если нет, то какие альтернативные способы кодирования обработки событий в моей программе упрощают компилятор?