我有一个扩展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的所有逻辑,这就是我扩展它的原因,而且还覆盖了基本方法。我该怎么做?

最佳答案

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

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

然后,将通用逻辑放入该类中,然后创建新的类,如下所示:


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

07-27 15:04