[英]Java Generics - Abstract Classes abstract function override
我正在嘗試在 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);
}
我正在使用 ItemPresenter1 類實現這個類。 代碼如下:
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) {
}
}
Item1 類是擴展 BaseBackupItem 類。 View1 類是擴展 MvpView 類。
public class Item1 extends BaseBackupItem {
}
public class View1 extends MvpView {
}
那么,我應該如何解決這個問題:
從 :
public abstract void backup(List<? extends BaseBackupItem>);
到 :
@Override
public void backup(List<Item1>);
錯誤 :
Method does not override method from its superclass.
您需要向BaseItemPresenter
的類定義添加一個新的類型參數,以便將List
的預期類型指定為下一個:
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);
...
}
然后你的類ItemPresenter1
將被聲明為下一個:
public class ItemPresenter1 extends BaseItemPresenter<MvpView, Item1 > {
...
@Override
public void backup(List<Item1> list) {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.