ho la seguente gerarchia in java:Override interfaccia ereditata con sottotipo con i generici
interface ObserverA {}
interface A {
void method1();
addObserver(Observer o);
}
E voglio estenderlo in questo modo:
interface ObserverB extends ObserverA{}
interface B extends A {
void method2();
addObserver(ObserverB o);
}
in modo tale che il addObserver()
il metodo di B
sostituisce lo stesso metodo in A
. Poiché non funziona, le implementazioni di B
dovrebbero implementare entrambe le versioni di addObserver()
, non ne avrei avuto uno solo.
si può fare in un modo intelligente che non comporta dover parametrizzare A
come:
interface A<O extends Observer> {
addObserver(O o);
}
soluzioni hacker sono i benvenuti!
Il tipo generico è sempre un modo migliore per fare ciò in cui non si conosce il tipo – Biswajit