为什么我在FuzzyWuzzyContainer上收到此编译器错误?
绑定不匹配:FuzzyWuzzy类型不是FuzzyContainer类型的有界参数
<T extends Fuzzy & Comparable<T>>的有效替代
实际上,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
{
}
Run Code Online (Sandbox Code Playgroud)
尝试FuzzyContainer这样声明:
public abstract class FuzzyContainer<T extends Fuzzy & Comparable<? super T>>
Run Code Online (Sandbox Code Playgroud)
这是必要的,因为FuzzyWuzzy实现Comparable<Fuzzy>而不是Comparable<FuzzyWuzzy>(您也可以进行更改,正如猫指出的那样)。