Java泛型绑定不匹配递归类型
我有一个奇怪的问题,我不知道如何解决。 以下是出现错误的类的声明:Java泛型绑定不匹配递归类型,java,generics,Java,Generics,我有一个奇怪的问题,我不知道如何解决。 以下是出现错误的类的声明: public class DList<V extends Comparable<V>> { ... 公共类数据列表{。。。 下面我有一个具有以下签名的方法: public DList<DList<V>> split(int steps) { ... 公共数据列表拆分(整数步){。。。 这给了我具体的错误 Bound mismatch: The type DList<V
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>
绑定不匹配:类型DList不是类型DList的绑定参数的有效替代品
到目前为止,问题是下面的类接受具有可比较上限的类型V,但不接受递归类型DList。
如何解决这种类型的“递归”并消除错误?Have
DList
implementComparable
:
public class DList<V extends Comparable<V>> implements Comparable<DList<V>> {
@Override public int compareTo(DList<V> other) {
return 0;
}
}
有
d列表
实施可比
:
public class DList<V extends Comparable<V>> implements Comparable<DList<V>> {
@Override public int compareTo(DList<V> other) {
return 0;
}
}
嗯……你在这里做什么?你真的希望你的方法结果是
DList
的DList
吗?为什么DList
然后不实现Comparable
?DList代表一个双链接列表的实现,这个方法根据指示列表大小的步骤返回一个相同类型的列表每个列表。例如有一个[1,2,3,6,1]的列表和步骤2,我返回的列表中有对象[1,2][3,6][1]公平。但是如果你想以这种方式使用它,为什么DList
不也实现Comparable
?你完全正确,我一直在想什么,我太傻了,谢谢!那么我们能称这个问题为“打字错误”吗,关闭它然后继续?:)嗯…你在这里做什么?你真的希望你的方法结果是DList
的DList
吗?为什么不DList
然后实现Comparable
?DList代表一个双链接列表的实现,这个方法返回一个基于st的相同类型的列表列表表示每个列表大小的eps。例如,有一个[1,2,3,6,1]的列表和步骤2,我返回的列表中有对象[1,2][3,6][1]公平。但是如果你想以这种方式使用它,为什么DList
不也实现Comparable
?你完全正确,我一直在想什么,我太傻了,谢谢!那么我们能称这个问题为“打字错误”吗,关闭它然后继续?:@FedericoPeraltaSchaffner no:-)list
必须是Other
的一个实例(而且是多余的,因为split
声明为静态的)。如果您希望split
在DList
中作为非静态方法,只需将其声明为public DList split(int steps)
-V
则与课堂上的V
相同declaration@FedericoPeraltaSchaffner否:-)列表
必须是其他
的实例(而且是多余的,因为拆分
声明为静态)。如果要将split
作为DList
中的非静态方法,只需将其声明为public DList split(int steps)
-V
,则与类声明中的V
相同