1

我有以下代码。


interface Observer<T> {
    void update();
}


interface FirstClassObserver extends Observer<FirstClass>{ }


interface SecondClassObserver extends Observer<SecondSecond> { }

现在,我需要执行以下操作。


class MainClass implements FirstClassObserver, SecondClassObserver {
}

但是 Eclipse 给出了以下代码问题。

The interface Observer cannot be implemented more than once with different arguments: FirstClassObserver<FirstClass> and SecondClassObserver<SecondClass>

有没有办法我可以写我的 MainClass


class MainClass implements FirstClassObserver, SecondClassObserver {
   @Override
   void FirstClassObserver::update() { /* ... / }
   @Override
   void SecondClassObserver::update() { / ... */ }
}

4

1 回答 1

3

根据@Ted的评论。由于type erasure,您将无法执行此操作。基本上,所有泛型类型参数在编译后的字节码中都以 Object 形式结束。

同样根据@assylias的评论,可能会出现模棱两可的情况,即调用谁的update()方法实例MainClass.update()被调用。

于 2013-07-25T04:47:49.027 回答