泛型类型有问题 - Java

Having problems with generic types - Java

我有三个 Class 都使用泛型类型:

public class Animal implements Comparable<Animal>

public class Sequence<T extends Comparable<T>> implements Iterable<T>

public class Zoo<T extends Animal> extends Sequence<T>

所以我的思考过程是这样的:AnimalComparable<Animal> 的子类型。 Sequence 中的通用子类型 T 也是 Comparable<Animal> 的子类型。因此,当我创建类型为 Sequence<Animal> 的对象时,它工作得很好。但是现在我创建了一个ClassZoo。我希望 ZooSequence 相同,只是通用类型 T 应限于 Animal(并且只能采用 Animal 或 Animal 的一种固定子类型)。所以我让 Zoo 扩展 Sequence<T>,T 扩展 Animal。我认为它应该可以工作,因为 AnimalComparable 的子类型,但编译器给我一个错误:

T is not within its bounds; should implement Comparable<T>

但是 T 已经实现了 Comparable,因为它是 Animal 的子类型,不是吗? 有人可以解释发生了什么,或者我如何才能实现我想要做的事情吗?

更改 Sequence 类型变量的范围:

public class Sequence<T extends Comparable<? super T>>

或者,定义不带类型变量的 Zoo

public class Zoo extends Sequence<Animal>