三层java泛型继承
这是我当前的java类结构三层java泛型继承,java,generics,Java,Generics,这是我当前的java类结构 Abstract TopClass <T extends Foo> display(T) BottomSubClass extends TopClass <MyFoo> void display(MyFoo) { // display something } 现在我在BottomSubClass中得到编译错误,表明 方法void display(MyFoo)需要在超类中声明。 实现方法
Abstract TopClass <T extends Foo>
display(T)
BottomSubClass extends TopClass <MyFoo>
void display(MyFoo)
{
// display something
}
现在我在BottomSubClass
中得到编译错误,表明
方法void display(MyFoo)
需要在超类中声明。
实现方法voiddisplay(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
}
}
抽象类TopClass{
抽象空洞显示(T);
}
抽象类中介子类扩展了TopClass{
}
类底部子类扩展了中间子类
{
无效显示(MyFoo t)
{
//展示
}
}
您的问题是
IntermediateSubClass
的定义,它扩展了原始TopClass
,而不是TopClass
,这不应该是IntermediateSubClass扩展了TopClass
?这并不一定能解决您的问题。请发布除您所询问的编译错误之外没有其他编译错误的代码。这对每个人来说都会容易得多。Thx.扩展TopClass
而不使用任何泛型类型将禁用类型检查,并将使编译器混淆,至少在TopClass
中会看到T=Object
。这将导致后续错误,有时会造成相当混乱。因此,扩展TopClass
应该可以解决您的问题。
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
}
}