泛型类型参数的名称不必相同,因此为了更好地看到差异,让我们重命名它们:
BST<A extends Comparable<? super A>, B>
RectangleBST<C, D> extends BST<C, D>
其工作原理与函数调用类似:
bst(int a, int b)
rectangleBst(int c, int d) {
bst(c, d);
}
c
兼容
a
. 我是说,如果
C
兼容
A
.
事实并非如此,因为
C
可以是任何类型,即使是未实现/扩展的类型
Comparable
. 自从
A.
需要类型参数来实现/扩展
可比较的
不兼容。
要使其兼容,还需要限制
C
可比较的
:
RectangleBST<C extends Comparable<? super C>, D> extends BST<C, D>
兼容
A.
.
BST<K extends Comparable<? super K>, V>
RectangleBST<K extends Comparable<? super K>, V> extends BST<K, V>
K
在里面
RectangleBST
不是吗
K
作为
K
在里面
BST
. 这是另一种情况
映射到
K
在里面
,与
C
A.
.