2014-04-06 85 views
0

我想將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的參數>「。

我試圖

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
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>> 

否則,您試圖聲明子類型沒有限制,即編譯錯誤「綁定不匹配」。

你所嘗試的幾乎是正確的,綁定只需要在泛型類型聲明中,而不是傳遞給超類的參數。