Così ho questa interfacciaTipo La cancellatura alza la sua brutta testa, come aggirare?
public interface EventHandler<E extends EventObject>
{
public void handleEvent(E event);
}
e voglio ricavare le classi per esso che gestiscono gli eventi, in questo modo:
public class WorkingHandler implements EventHandler<MouseEvent>
{
public void handleEvent(MouseEvent event)
{
//handle event
}
}
Sopra esempio funziona bene. Ma il compilatore non mi consentirà di implementare EventHandler più volte, a causa della cancellazione del tipo estremamente frustrante .
public class NotWorkingHandler implements EventHandler<MouseEvent>, EventHandler<KeyEvent>
{
public void handleEvent(MouseEvent event)
{
//handle mouse event
}
public void handleEvent(KeyEvent event)
{
//handle key event
}
}
Molte domande ...
- Perché Java non permettono la cancellazione di tipo? IIRC è qualcosa a che fare con l'essere compatibile con le versioni precedenti di Java, corretto?
EDIT: Voglio dire, perché non Java ha Tipo Erasure (avuto il contrario)
C'è qualche sorta di "mod"/"estensione" (per mancanza di una parola migliore) o linguaggi di programmazione che mi consentono di aggirare il tipo di cancellazione? Poiché non sto utilizzando versioni precedenti di Java, non mi interessa che il mio codice sia compatibile con il codice precedente.
Esistono soluzioni alternative, all'interno del linguaggio Java, che è possibile utilizzare per aggirare il tipo di cancellazione?
In caso negativo, quali sono alcuni modi alternativi per codificare la gestione degli eventi nel mio programma che mantiene il compilatore felice?
-- non ha senso. Java consente la cancellazione dei tipi, infatti implementa la cancellazione dei tipi. – emory
"Esiste una sorta di" mod "/" estensione "(per mancanza di una parola migliore) o di linguaggi di programmazione che mi permettono di aggirare la cancellazione del tipo?" - Sì, molte lingue non hanno cancellazioni di tipi. – emory
Stai cercando C# –