gpt4 book ai didi

Java 方法覆盖 - "Method does not override method from super..."

转载 作者:行者123 更新时间:2023-11-30 11:06:03 25 4
gpt4 key购买 nike

来自 C# 背景,我不知道这里的问题是什么。

我有我的基类,它定义了抽象方法 getContentValues

public abstract class BaseDataSource<T> {
protected abstract ContentValues getContentValues(T object);
}

从它继承的是另一个类,IIdentifiableDataSource。

public abstract class IIdentifiableDataSource extends BaseDataSource<IIdentifiable>  {
// Nothing in here is relevant to the getContentValues method.
}

最后,继承自IIdentifiableDataSource,是最后一个子类MessagesDataSource,其中getContentValues被覆盖。它在这里抛出一个错误,指出“方法不覆盖其父类(super class)的方法”

public class MessagesDataSource extends IIdentifiableDataSource {
@Override
protected ContentValues getContentValues(Message object) {
// fill ContentValues and return it.
}
}

我想这与通用基类有关,但我不确定为什么。

最佳答案

你的 MessagesDataSource类是 BaseDataSource<IIdentifiable> , 不是 BaseDataSource<Message> . getContentValues 的参数类型在MessagesDataSource必须匹配类型参数 IIdentifiable .

@Override
protected ContentValues getContentValues(IIdentifiable object) {

或者,如果您必须有 Message而不是作为参数类型,假设 Message工具 IIdentifiableobject , 然后是中间类 IIdentifiableDataSource可以定义自己的类型参数 MessagesDataSource可以供应。

public abstract class IIdentifiableDataSource<T extends IIdentifiable>
extends BaseDataSource<T> {

然后MessagesDataSource可以定义 T成为Message :

public class MessagesDataSource extends IIdentifiableDataSource<Message> {

关于Java 方法覆盖 - "Method does not override method from super...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29422765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com