Mam następującą hierarchię w Java:Zastąp w odziedziczonej interfejs z podtypu z rodzajowych
interface ObserverA {}
interface A {
void method1();
addObserver(Observer o);
}
I chcę przedłużyć go tak:
interface ObserverB extends ObserverA{}
interface B extends A {
void method2();
addObserver(ObserverB o);
}
w taki sposób, że addObserver()
metoda B
zastąpi tę samą metodę w A
. Ponieważ to nie działa, implementacje B
wymagałyby implementacji obu wersji addObserver()
, nie będę miał ich.
Można to zrobić w sprytny sposób, że nie wymaga konieczności parametryzacji A
jak:
interface A<O extends Observer> {
addObserver(O o);
}
hackish rozwiązania są jak najbardziej mile widziane!
Typ ogólny jest zawsze lepszym sposobem na zrobienie czegoś takiego, gdy nie znamy typu – Biswajit