我在java中有以下层次结构:
interface ObserverA {}
interface A {
void method1();
addObserver(Observer o);
}
我想这样扩展它:
interface ObserverB extends ObserverA{}
interface B extends A {
void method2();
addObserver(ObserverB o);
}
以这样的方式addObserver()
的方法B
将覆盖相同的方法A
。
事实上它不起作用,实施B
需要实现两个版本addObserver()
,我不想只有一个。
这可以以一种不需要参数化的巧妙方式来完成吗A
like:
interface A<O extends Observer> {
addObserver(O o);
}
最受欢迎的黑客解决方案!
您无法缩小子接口或子类中的方法参数类型。您只能扩展它们,因为子类型的实现必须能够履行超类型的契约。
同样,出于同样的原因,您可以缩小返回类型和异常的范围,但不能扩大它们的范围。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)