java - 覆盖派生类中已经覆盖的方法

标签 java android

我有一个扩展 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);
    }
}

我无法重写它,出现编译错误 - 返回类型与 CarSettingsAdapter.getItem(int) 不兼容

我想使用 CarSettingsAdapter 的所有逻辑,这就是我扩展它的原因,同时也覆盖了基本方法。我该怎么做?

最佳答案

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

这样你的getItem()方法可以返回 T .

然后将通用逻辑放入该类中并像这样创建新类:

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

关于java - 覆盖派生类中已经覆盖的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28352281/

相关文章:

java - 我可以防止 `java.util.logging.LogManager` 关闭得太快吗?

java - 如何查找数组中给定 int 的每个索引?

android - 如何使用PhoneGap读写内部数据库?

java - Kafka - TimestampExtractor 的问题

java - Java中的@override和Python中的@decorator的区别

java - 使用 Fragment 类中的数据库填充 android ListView 时发生意外错误

php - Android 客户端 : Web service - what's the correct SOAP_ACTION, METHOD_NAME、NAMESPACE、我应该使用的 URL?

android - 如何在 Android 4.1+ 上将自签名 SSL 证书导入 Volley

android - 当Android Webrtc应用程序在后台,来电时,如何将来电屏幕调到前台?

android - 如何从 Android 设备获取错误信息?