多级继承

时间:2015-04-28 06:49:52

标签: java generics inheritance

我有以下Java类,具有多个继承级别和某些类型参数。我想在B类中使用类型参数T.

class B extends C {
}
class C<T extends D> {
}
class D {
}

然而,他跟随不编译:

class B extends C {
    T t;
}
class C<T extends D> {
}
class D {
}

虽然我可以在C类中定义变量t,但它不是一个好的编码实践。如何定义以下内容(这也不能编译)?

class B extends C<T extends D> {
}

谢谢!

2 个答案:

答案 0 :(得分:5)

不继承类型参数!

如果您希望您的班级B具有通用性,则应指定自己的类型参数:

class B<T extends D> extends C<T> {
    T t;
    ...
}

请注意,您必须再次约束类型参数T以使其扩展D,因为它在类C中以这种方式受到约束。

答案 1 :(得分:1)

应该是:

class B<T extends D> extends C<T> {
}