使用带有泛型的子类型覆盖继承接口中的方法

2024-02-28

我在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(使用前将#替换为@)

使用带有泛型的子类型覆盖继承接口中的方法 的相关文章

随机推荐