覆盖派生类中已覆盖的方法
问题描述:
我有一个延伸FragmentStatePagerAdapter
的类CarSettingsAdapter
。 那堂课我有返回类型CarSettings覆盖派生类中已覆盖的方法
@Override
public CarSettings getItem(int position) {
return carSettingsList.get(position);
}
现在我创建一个扩展CarSettingsAdapter
类一个新的类,但我希望它回到我自己的类型的项目一个重写的方法 - 让说MyTypeB
public class NewCarSettings extends CarSettings {
@Override
public MyTypeB getItem(int position) {
return typeBList.get(position);
}
}
我不能重写它,我得到一个编译错误 - The return type is incompatible with CarSettingsAdapter.getItem(int)
。
我想使用CarSettingsAdapter
的所有逻辑,这就是为什么我扩展它,但也覆盖基本的方法。我该怎么做?
答
您可以创建一个使用泛型的中间类。例如CustomSettingsAdapter<T> extends FragmentStatePagerAdapter
。
那样你的getItem()
方法可能会返回T
。
然后你把常见的逻辑该类并创建新类这样的:
CarSettingsAdapter extends CustomSettingsAdapter<CarSettings>
NewCarSettingsAdapter extends CustomSettingsAdapter<NewCarSettings>
如果更改方法签名,通过定义你是不是重写它,你正在创建一个新的方法。 – azurefrog 2015-02-05 19:23:20
NewTypeB的类型层次结构是什么?如果它是CarSettings的子类型,这将仅适用。 – 2015-02-05 19:23:56
@AndyTurner不是'NewTypeB'不是'CarSettings'的子类型。那么如何扩展“CarSettingsAdapter”类并添加一些更改...我不想将95%的代码复制到我的新类中 – 2015-02-05 19:29:02