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
{
}
4

2 に答える 2

4

問題はFuzzyWuzzy implements Comparable<Fuzzy>です。は、両方のが同じタイプであることをFuzzyContainer期待しています。実装しますが、実装しません。TFuzzyContainer<T extends Fuzzy & Comparable<T>>FuzzyWuzzyFuzzyComparable<FuzzyWuzzy>

試す、FuzzyWuzzy implements Fuzzy, Comparable<FuzzyWuzzy>

于 2012-11-15T16:13:42.087 に答える
3

FuzzyContainer次のように宣言してみてください。

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

これは、ではなく実装するために必要ですFuzzyWuzzyThe Catが指摘したように、その変更を行うこともできます)。Comparable<Fuzzy>Comparable<FuzzyWuzzy>

于 2012-11-15T16:17:10.037 に答える