这是我当前的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>
。