我有一个奇怪的问题,我不知道该如何解决。
这是出现错误的类的声明:

public class DList<V extends Comparable<V>> { ...


在下面,我有一个具有以下签名的方法:

public DList<DList<V>> split(int steps) { ...


这给了我具体的错误

Bound mismatch: The type DList<V> is not a valid substitute for the bounded parameter <V extends Comparable<V>> of the type DList<V>


到目前为止,问题在于以下类接受具有上限Comparable的类型V,但不接受递归类型DList。
如何解决这种类型的“递归”并摆脱错误?

最佳答案

DList实现Comparable

public class DList<V extends Comparable<V>> implements Comparable<DList<V>> {
    @Override public int compareTo(DList<V> other) {
        return 0;
    }
}


然后确保V的替代品边界清楚:

public class Other {

    public static <X extends Comparable<X>> DList<DList<X>> split(int steps) {
        return null;
    }

}

关于java - Java泛型绑定(bind)不匹配递归类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48937403/

10-10 09:46