Java泛型-抽象类抽象函数重写

Java泛型-抽象类抽象函数重写,java,android,generics,abstract-class,Java,Android,Generics,Abstract Class,我正在尝试在android中实现基本抽象类 我的基本抽象类是BaseItemPresenter类。课程安排如下: public abstract class BaseItemPresenter<T extends MvpView> extends BasePresenter<T> { public abstract void loadFromDevice(); public abstract void loadFromFile(); publ

我正在尝试在android中实现基本抽象类

我的基本抽象类是BaseItemPresenter类。课程安排如下:

public abstract class BaseItemPresenter<T extends MvpView> extends BasePresenter<T> {

    public abstract void loadFromDevice();

    public abstract void loadFromFile();

    public abstract void backup(List<? extends BaseBackupItem> list);

    public abstract void delete(List<? extends BaseBackupItem> list);

    public abstract void restore(List<? extends BaseBackupItem> list);

    public abstract void sort(int sortType, boolean isAscending);

    public abstract void sort(List<? extends BaseBackupItem> list, int sortType, boolean isAscending);

    public abstract void filter(List<? extends BaseBackupItem> list, Class<? extends MvpView> filterOptions);
}
public class ItemPresenter1 extends BaseItemPresenter<MvpView> {

    @Override
    public void loadFromDevice() {

    }

    @Override
    public void loadFromFile() {

    }

    @Override
    public void backup(List<Item1> list) {

    }

    @Override
    public void delete(List<Item1> list) {

    }

    @Override
    public void restore(List<Item1> list) {

    }

    @Override
    public void sort(int sortType, boolean isAscending) {

    }

    @Override
    public void sort(List<Item1> list, int sortType, boolean isAscending) {

    }

    @Override
    public void filter(List<Item1> list, Class<View1> filterOptions) {

    }
}
那么,我应该如何解决这个问题:

发件人:

public abstract void backup(List<? extends BaseBackupItem>);

您需要在
BaseItemPresenter
的类定义中添加一个新类型参数,以指定
列表的预期类型,如下所示:

public abstract class BaseItemPresenter<T extends MvpView, I extends BaseBackupItem> 
    extends BasePresenter<T> {
    ...
    public abstract void backup(List<I> list);

    public abstract void delete(List<I> list);

    public abstract void restore(List<I> list);

    ...
}

向类添加另一个泛型参数,并将其用作列表的类型为什么需要更改签名?
@Override
public void backup(List<Item1>);
Method does not override method from its superclass.
public abstract class BaseItemPresenter<T extends MvpView, I extends BaseBackupItem> 
    extends BasePresenter<T> {
    ...
    public abstract void backup(List<I> list);

    public abstract void delete(List<I> list);

    public abstract void restore(List<I> list);

    ...
}
public class ItemPresenter1 extends BaseItemPresenter<MvpView, Item1 > {
    ...
    @Override
    public void backup(List<Item1> list) {