Ho il seguente codice di prova:Non può compilare una classe che implementa un'interfaccia senza tipo di parametro
public interface Container<I> {
public void addClass(Class<?> clazz);
}
public class MyContainer implements Container {
public void addClass(Class<?> clazz) {}
}
ed ottengo il seguente errore quando si tenta di compilare questi due classi:
myContainer. java: 1: MyContainer non è astratto e non sovrascrive il metodo astratto addClass (java.lang.Class) nel contenitore
Se aggiungo un tipo all'interfaccia Container e in MyContainer (come <Object>
), non ho ricevuto l'errore.
Il problema è che sto introducendo il parametro type su Container, che fa parte dell'API pubblica, quindi per compatibilità, non posso avere tutte le classi di implementazione impossibili da compilare.
Qualcuno ha qualche idea? È un problema di cancellazione del tipo? C'è una soluzione?
@ elaborazione Skeet- sarebbe helpful..TIA – hakish
Vedo, grazie Jon. Accettato. –