java - 在具有多个边界的类型参数上出现编译错误

标签 java generics

为什么我在 FuzzyWuzzyContainer 上遇到这个编译器错误?

Bound mismatch:The type FuzzyWuzzy is not a valid substitute for the bounded parameter <T extends Fuzzy & Comparable<T>> of the type FuzzyContainer

FuzzyWuzzy 实际上确实实现了有界泛型中定义的两个接口(interface)。

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

最佳答案

问题是FuzzyWuzzy implements Comparable<Fuzzy> . FuzzyContainer期待两个TFuzzyContainer<T extends Fuzzy & Comparable<T>>是同一类型。 FuzzyWuzzy工具 Fuzzy但它没有实现 Comparable<FuzzyWuzzy> .

尝试,FuzzyWuzzy implements Fuzzy, Comparable<FuzzyWuzzy>

关于java - 在具有多个边界的类型参数上出现编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13401549/

相关文章:

c# - 创建通用扩展方法以提供过滤功能

java - 如何构造一个具有抽象类类型字段的对象?

java - 在菜单中显示多列

java - 寻求用于套接字编程(Java 或 Python)的高级库

java - 在带有 for 循环的 if 语句中使用数组时找不到符号

c# - 转换 System.Func<T>

java - 在 html 报告中转义 html 标签

delphi - 基于泛型类的具体类型的条件行为

Java:使用lambda参数获取实际类型的泛型方法

Java从父对象调用子方法