泛型:从实现接口的抽象类继承

我有以下界面:

public interface SingleRecordInterface<T> {
    public void insert(T object);
}

我有下面的抽象类(没有提到方法插入):

public abstract class AbstractEntry implements SingleRecordInterface<AbstractEntryBean> {
}

我有具体类:

public class SpecificEntry extends AbstractEntry {
    public void insert(SpecificEntryBean entry) {
        // stuff
    }
}

最后,SpecificEntryBean被定义为:

public class SpecificEntryBean extends AbstractEntryBean {
}

我有以下错误:

类型 SpecificEntry 必须实现继承的抽象方法 SingleRecordInterface.insert(AbstractEntryBean)

我不明白这个错误的原因,因为 SpecificEntryBean 扩展了 AbstractEntryBean。如何修复此错误?


答案 1

您还需要使抽象类泛型:

public abstract class AbstractEntry<T extends AbstractEntryBean> implements SingleRecordInterface<T> {
}

然后对于您的具体类:

public class SpecificEntry extends AbstractEntry<SpecificEntryBean> {
}

答案 2

更改为以下内容:

public abstract class AbstractEntry<EB extends AbstractEntryBean> implements SingleRecordInterface<EB> {
}

public class SpecificEntry extends AbstractEntry<SpecificEntryBean> {
    public void insert(SpecificEntryBean entry) {
        // stuff
    }
}

推荐