这是我当前的java类结构
Abstract TopClass <T extends Foo>
display(T)
BottomSubClass extends TopClass <MyFoo>
void display(MyFoo)
{
// display something
}
其中MyFoo
扩展Foo
。
这很好,但现在我想在TopClass
和BottomSubClass
之间引入一个抽象的中间子类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>
。