Tipo Erasure asoma su fea cabeza, ¿cómo sortear?

Así que tengo esta interfaz

<code>public interface EventHandler<E extends EventObject>
{   
    public void handleEvent(E event);
}
</code>

Y quiero derivar clases para eso que manejen eventos, como así:

<code>public class WorkingHandler implements EventHandler<MouseEvent>
{
    public void handleEvent(MouseEvent event)
    {
        //handle event
    }
}
</code>

El ejemplo de arriba funciona bien. Pero el compilador no me permite implementar EventHandler varias veces, debido al extremadamente frustrante Eras Erasure.

<code>public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
    public void handleEvent(MouseEvent event)
    {
        //handle mouse event
    }

    public void handleEvent(KeyEvent event)
    {
        //handle key event
    }
}
</code>

Varias preguntas...

¿Por qué Java no permite el borrado de tipo? IIRC tiene algo que ver con ser compatible con versiones anteriores de Java, ¿correcto?

EDIT: me refiero a por qué Java tiene borrado de tipo (lo tenía al revés)

¿Hay algún tipo de "mod" / "extensión" (por falta de una palabra mejor) o lenguajes de programación que me permitan desplazarme por Type Erasure? Como no estoy usando versiones anteriores de Java, no me importa que mi código sea compatible con el código anterior.

¿Existen soluciones alternativas, dentro del lenguaje Java, que pueda usar para sortear el borrado de tipos?

Si no, ¿cuáles son algunas formas alternativas de codificar el manejo de eventos en mi programa que mantiene al compilador feliz?

Respuestas a la pregunta(4)

Su respuesta a la pregunta