我试图将TreeMap的一个版本扩展为一个子类来更有效地索引单词,但我不确定正确的语法是什么。树形图的类定义如下所示
public class MyTreeMap<K extends Comparable<? super K>,V> extends AbstractMap<K,V> {
以最直接的方式扩展课程
public class TreeMapIndexer<K> extends MyTreeMap<K,LinkedList<Integer>> {
产生错误 “绑定不匹配:类型K不是MyTreeMap类型的有界参数&gt;的有效替代”。
我试过
public class TreeMapIndexer<K> extends
MyTreeMap<K extends Comparable<? super K>, LinkedList<Integer>> {
相反,但会产生编译器错误“令牌上的语法错误”扩展“,预期”。错误的延伸是在“”。
我找到了另一个带有相同错误消息的线程(Generic Generics: "Syntax error on token "extends", , expected")。它看起来与我的情况略有不同,但我试过了
public class TreeMapIndexer<K> extends
MyTreeMap<K, K extends Comparable<? super K>, LinkedList<Integer>> {
产生完全相同的“令牌上的语法错误”扩展“,预期”编译器消息。
答案 0 :(得分:1)
class MyTreeMap<K extends Comparable<? super K>, V>
extends AbstractMap<K, V>
因此声明K
的边界为extends Comparable<? super K>
。您只需要在子类上重新声明相同的绑定。
class TreeMapIndexer<K extends Comparable<? super K>>
extends MyTreeMap<K, LinkedList<Integer>>
否则,您试图将子类型声明为没有限制,这是编译错误&#39;绑定不匹配&#39;。
你尝试的几乎是正确的,只需要在泛型类型声明中,而不是参数(传递给)超类。