Así que tienen esta interfazTipo Erasure levanta su cabeza fea, ¿cómo eludir?
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
y quiero derivar clases para controlar los eventos de él que, de este modo:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
El ejemplo de arriba funciona bien. Pero el compilador no me deja implementar EventHandler varias veces, debido al extremadamente frustrante 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
}
}
varias preguntas ...
- ¿Por qué Java no permiten Tipo Erasure? IIRC es algo relacionado con ser compatible con versiones anteriores de Java, ¿correcto?
EDIT: Quiero decir ¿por qué Java tiene el Tipo Erasure (lo tenía al revés)
¿Hay alguna especie de "mod"/"extensión" (a falta de una palabra mejor) o lenguajes de programación que me permiten sortear Type Erasure? Como no estoy usando versiones anteriores de Java, no me importa que mi código sea compatible con código anterior.
¿Existen soluciones provisionales, dentro del lenguaje Java, que pueda usar para evitar el borrado de tipos?
Si no, ¿cuáles son algunas formas alternativas de programar el manejo de eventos en mi programa que mantienen al compilador satisfecho?
-- no tiene sentido. Java permite el borrado de tipos, de hecho implementa borrado de tipos. – emory
"¿Hay algún tipo de" mod "/" extensión "(por falta de una palabra mejor) o lenguajes de programación que me permitan sortear Type Erasure?" - Sí, muchos idiomas no tienen borrado de tipo. – emory
Está buscando C# –