三层java泛型继承



这是我当前的java类结构

Abstract TopClass <T extends Foo>
display(T)
BottomSubClass extends TopClass <MyFoo>
void display(MyFoo)
{
// display something
}

其中MyFoo扩展Foo

这很好,但现在我想在TopClassBottomSubClass之间引入一个抽象的中间子类IntermediateSubClass

Abstract TopClass <T extends Foo>
display(T)    
Abstract IntermediateSubClass<T extends Foo> extends TopClass 
BottomSubClass extends IntermediateSubClass<MyFoo>
void display(MyFoo)
{
// display something
}

我现在在BottomSubClass中得到编译错误,指示重写的方法void display(MyFoo)需要在超类中声明。我在实现方法void display(Foo)时也遇到了一个错误。

为什么泛型类参数不向下传播到类层次结构中——我在IntermediateSubClass中的语法有问题吗?

我期望BottomSubClass编译。

以下通过编译:

abstract class TopClass <T extends Foo> {
abstract void display(T t);
}
abstract class IntermediateSubClass<T extends Foo> extends TopClass<T> {
}
class BottomSubClass extends IntermediateSubClass<MyFoo>
{
void display(MyFoo t)
{
// display something
}
}

您的问题是IntermediateSubClass的定义,它扩展了原始TopClass而不是TopClass<T>

最新更新