覆盖派生类中已重写的方法

时间:2015-02-05 19:22:07

标签: java android

我有一个扩展CarSettingsAdapter的课程FragmentStatePagerAdapter。 在那个类中,我有一个重写的方法,它返回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的所有逻辑,这就是我扩展它的原因,也是为了覆盖基本方法。我该怎么办?

1 个答案:

答案 0 :(得分:2)

您可以创建一个使用泛型的中间类。例如CustomSettingsAdapter<T> extends FragmentStatePagerAdapter

这样,您的getItem()方法可以返回T

然后你将通用逻辑放在那个类中并创建这样的新类:

  • CarSettingsAdapter extends CustomSettingsAdapter<CarSettings>
  • NewCarSettingsAdapter extends CustomSettingsAdapter<NewCarSettings>