我有以下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> {
}
谢谢!
答案 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> {
}