K 和 V 保证是字符串或整数。我已经多次使用泛型,但从未使用过<K extends Comparable<K>, V>,所以我现在很挣扎。
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
当你实现一个泛型接口时,你应该总是指定类型参数。您可以不指定它们而逃脱,但是您正在使用原始类型,而您不应该使用原始类型。
当你做指定它们,你还需要一个有效的方式来指定。
第一个选项是错误的,原因有两个:
当你指定类型参数时,你永远不会重写那个参数的边界,所以写K extends Comparable<K>是错误的
K并且V没有在任何地方定义。
第二个选项是错误的,因为您重写了K. 在第一选择此选项的不同K和V 在这里定义-K并且V是的类型参数Son。
第三个选项编译,但它使用原始类型,这首先违背了使用泛型的目的。
理想情况下,您会编写如下内容:
class Son<K extends Comparable<K>, V> implements Father<K, V> {
}
注意:我怎么没改写界限,定义K和V作为类型参数Son。
或者,指定一个具体类型:
class Son implements Father<String, Integer> {
}
添加回答
举报
0/150
提交
取消