2012-11-15 36 views
5

爲什麼我得到這個編譯器錯誤FuzzyWuzzyContainer獲取編譯錯誤的類型參數與多個邊界

綁定不匹配:類型FuzzyWuzzy是不是該類型的 界參數<T extends Fuzzy & Comparable<T>>一個有效的替代 FuzzyContainer

FuzzyWuzzy事實上確實實現在有限的通用定義的兩個接口。

public interface Fuzzy 
{ 
    boolean isFuzzy(); 
} 

public class FuzzyWuzzy implements Fuzzy, Comparable<Fuzzy> 
{ 
    public boolean isFuzzy() {return true;} 
    public int compare(Fuzzy o) {return 0;) 
} 

public abstract class FuzzyContainer<T extends Fuzzy & Comparable<T>> 
{ 
    : 
} 

public class FuzzyWuzzyContainer extends Fuzzycontainer<FuzzyWuzzy> // Error is here 
{ 
} 
+0

你想'FuzzyWuzzy實現模糊,可比較'? –

+0

不幸的是,沒有。 – Robin

回答

3

嘗試聲明FuzzyContainer這樣的:

public abstract class FuzzyContainer<T extends Fuzzy & Comparable<? super T>> 

這是因爲FuzzyWuzzy工具Comparable<Fuzzy>,而不是Comparable<FuzzyWuzzy>(你也能有這樣的變化,爲The Cat pointed out)必要的。

+2

謝謝。我昨天試圖弄清楚這一點,現在我的前額上有一個鍵盤印記,現在可以消除;-) – Robin

4

問題是FuzzyWuzzy implements Comparable<Fuzzy>FuzzyContainer預計FuzzyContainer<T extends Fuzzy & Comparable<T>>中的T都是相同的類型。 FuzzyWuzzy implements Fuzzy但它不實現Comparable<FuzzyWuzzy>

嘗試,FuzzyWuzzy implements Fuzzy, Comparable<FuzzyWuzzy>

+0

很好的答案,不幸的是不適合我的特殊用例。 – Robin