Więc mam tego interfejsuTyp Erasure wychowuje swoją brzydką głowę, jak ominąć?
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
i chcę czerpać to, że zajęcia dla obsługi zdarzeń, tak jak poniżej:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
Powyższy przykład działa dobrze. Ale kompilator nie pozwoli mi zaimplementować EventHandler wiele razy, ze względu na bardzo frustrujące Errors Typu .
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
Kilka pytań ...
- Dlaczego Java nie pozwalają Type Erasure? IIRC ma coś wspólnego z kompatybilnością z wcześniejszymi wersjami Javy, prawda?
EDIT: To znaczy dlaczego Java mieć Type Erasure (miał to na odwrót)
Czy istnieje jakiś rodzaj „mod”/„rozszerzeniem” (z braku lepszego słowa) lub języków programowania, które pozwalają mi ominąć typ Erasure? Ponieważ nie używam starszych wersji Javy, nie obchodzi mnie, że mój kod jest zgodny ze starszym kodem.
Czy są jakieś obejścia w języku Java, których mogę użyć, aby ominąć typ Erasure?
Jeśli nie, jakie są alternatywne sposoby kodowania obsługi zdarzeń w moim programie, który zapewnia kompilatorowi szczęście?
-- nie ma sensu. Java pozwala na wymazywanie typów - w rzeczywistości implementuje wymazywanie typów. – emory
"Czy jest jakiś rodzaj" mod "/" rozszerzenie "(z braku lepszego słowa) lub języków programowania, które pozwalają mi ominąć typ Erasure?" - Tak, wiele języków nie ma wymazania typów. – emory
Szukasz C# –