我有以下代码:

interface MVPView <A, B> {
   void updateView(A a);
   void attachPresenter(B presenter);
}

public class ConcreteMVPView implements MVPView<MyObject, MyPresenter> {


}


这样编译就可以了。

但是,如果我将代码更改如下:

interface MVP <B> {
   void attachPresenter(B presenter);
}

interface MVPView <A> extends MVP  {
   void updateView(A a);
}

public class ConcreteMVPView implements MVPView<MyObject> {
 // how can I implement that attachPresenter?


}


该代码甚至无法编译。我究竟做错了什么?

最佳答案

如果只需要实现MVP,则可以通过以下方式实现:

interface MVP<B> {
    void attachPresenter(B presenter);
}

public class MVPImpl implements MVPView<MyPresenter> {

}

如果要实现MVPView,可以执行以下操作:
interface MVP<B> {
    void attachPresenter(B presenter);
}

interface MVPView<A, B> extends MVP<B> {
    void updateView(A a);
}

public class ConcreteMVPView implements MVPView<MyObject, MyPresenter> {

}

关于java - 没有编译错误就无法扩展通用接口(interface),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52182797/

10-10 08:20