扩展父类的参数扩展类的类

时间:2014-04-06 23:09:08

标签: java generics inheritance comparable

我试图将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>> {

产生完全相同的“令牌上的语法错误”扩展“,预期”编译器消息。

1 个答案:

答案 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;。

你尝试的几乎是正确的,只需要在泛型类型声明中,而不是参数(传递给)超类。

相关问题