Java:关于数据结构和通配符的泛型

Java:关于数据结构和通配符的泛型,java,generics,inheritance,wildcard,Java,Generics,Inheritance,Wildcard,我正在尝试学习如何使用泛型,为此,我创建了自己的数据结构,类似于带有迭代器的列表 最上层的类声明为: public class BasicList<A> implements Iterable { } 因此,当前的问题是,虽然我可以很容易地创建一个新的基性岩,其中充满了如下矿物: public class DescendingList<A extends Bigger<A>> extends BasicList<A> implements Ite

我正在尝试学习如何使用泛型,为此,我创建了自己的数据结构,类似于带有迭代器的列表

最上层的类声明为:

public class BasicList<A> implements Iterable {
}
因此,当前的问题是,虽然我可以很容易地创建一个新的基性岩,其中充满了如下矿物:

public class DescendingList<A extends Bigger<A>> extends BasicList<A> implements Iterable {
}
BasicList<Mineral> min = new BasicList<Mineral>();
BasicList min=new BasicList();
我不能对下降列表做同样的操作。每当我想和你一起去的时候

DescendingList<Mineral> min = new DescendingList<Mineral>();
downinglist min=new downinglist();
我的IDE(IntelliJ)运行正常

"Type parameter "Rock" is not within it's bound; should implement Bigger<Mineral>"
“类型参数”Rock“不在其范围内;应实现更大的”

我真的不明白为什么会这样。我很确定我把类型参数搞砸了,但我真的不知道在哪里。这应该是可以解决的(至少在不删除任何类/接口的情况下-类头可能是并且可能是完全混乱的)。提前感谢您提供的任何帮助。

A
Mineral
不是
biger
,它是
biger
,这与
biger
不兼容,因为即使
Mineral
Rock
,Java的泛型也是不变的。它需要是一个更大的
a
,因为
Rock
是如何定义的——实现
biger
——并且
downinglist
将类型参数
a
声明为
biger

因为它是一个使用者(类型参数作为方法参数),所以类型参数
a
的声明需要一个下限(super)

class DescendingList<A extends Bigger<? super A>> // ...
类下降列表
DescendingList<Mineral> min = new DescendingList<Mineral>();
"Type parameter "Rock" is not within it's bound; should implement Bigger<Mineral>"
class DescendingList<A extends Bigger<? super A>> // ...