【发布时间】:2020-05-30 14:47:56
【问题描述】:
有什么区别:
// 1
class A<T>
class B<T> extends A
和
// 2
class A<T>
class B<T> extends A<T>
是否 1 与 Raw Types 相关,例如:
List list = new ArrayList<Integer>();
而 2 是首选形式 ?
【问题讨论】:
-
不要假设两个类都有一个名为
T的类型变量这一事实意味着Java 知道“这个T 与那个T 相同”。如果是class B<S> extends A会怎样?还是class B<S, T, U> extends A?你认为 T 对 A 来说是什么? -
感谢您的回复。我也从@Donat 的回答中了解到,那些
Ts 完全不相关,所以A不知道B中的任何类型参数,因此(如果我错了,请纠正我)A是原始类型,它在内部保存Object。
标签: java generics inheritance