Siamo in grado di farla franca con questo in .NET:Perché Java non consente sovraccarichi in base ai parametri di tipo?
interface I<A> {}
interface I<A, B> {}
... ma in Java, lo stesso codice si tradurrà in un errore di compilazione.
Questo è interessante, dato che anche se le informazioni sul tipo sono passate in fase di esecuzione, ci si aspetterebbe che le informazioni sul numero del parametro di tipo siano ancora lì.
Se questa limitazione è correlata alla cancellazione del tipo, qualcuno può spiegare perché?
La limitazione è che non è possibile definire un'interfaccia più di una volta e non è possibile sovraccaricarla in questo modo. In fase di runtime, la cancellazione del tipo garantirebbe che sia 'I' sia effettivamente lo stesso tipo che non è consentito, o tecnicamente non farebbe quello che vuoi. –