2012-11-15 29 views
5

Bu derleyici hatası neden FuzzyWuzzyContainer?Çoklu sınırları olan tür parametresinde derleme hatası alma

Bound uyuşmazlığı: tip fuzzywuzzy Çeşidi sınırlı parametresi <T extends Fuzzy & Comparable<T>> için geçerli bir yerini tutmaz FuzzyContainer

fuzzywuzzy aslında sınırlı jenerik tanımlanan her iki arabirimi uyguluyor mu .

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 bulanık, karşılaştırılabilir ' uygular mı? –

+0

Maalesef, hayır. – Robin

cevap

3

böyle FuzzyContainer bildirmeyi deneyin:

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

Bu FuzzyWuzzy uygular Comparable<Fuzzy> yerine Comparable<FuzzyWuzzy> (ayrıca The Cat pointed out olarak, bu değişikliği yapabilir) beri gereklidir.

+2

Teşekkür ederim. Şimdi bunu anlamaya çalışan alnımdaki bir klavyem var. – Robin

4

Sorun, FuzzyWuzzy implements Comparable<Fuzzy>. FuzzyContainer, FuzzyContainer<T extends Fuzzy & Comparable<T>>'da T s'nin aynı türde olmasını beklemektedir. FuzzyWuzzy, Fuzzy uygular ancak Comparable<FuzzyWuzzy> uygulanmaz.

deneyin, FuzzyWuzzy implements Fuzzy, Comparable<FuzzyWuzzy>

+0

İyi bir cevap, maalesef kullanım durumum için doğru olanı değil. – Robin