泛型类型有问题-Java
我有三个类都使用泛型类型:泛型类型有问题-Java,java,class,generics,subclass,Java,Class,Generics,Subclass,我有三个类都使用泛型类型: 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> 公共类动物工具 公共类序列实现了Iterab
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>
公共类动物工具
公共类序列实现了Iterable
公共类序列
所以我的思维过程是这样的:Animal
是compariable
的一个亚型。序列
中的泛型子类型T也是可比
的一个子类型。因此,当我创建一个Sequence
类型的对象时,它工作得非常好。但是现在我创建了一个类Zoo
。我希望Zoo
与Sequence
相同,只是泛型T应限于动物(并且只能接受一个固定的动物亚型,即动物)。所以我做了Zoo
extendSequence
,用T扩展Animal
。我认为它应该可以工作,因为Animal
是Comparable
的子类型,但编译器给了我一个错误:
T不在其范围内;应实施可比的
但是T已经是可比的了,因为它是动物的一个亚型,不是吗?
有人能解释一下发生了什么,或者我如何实现我想要做的事情吗?更改
序列的类型变量的界限:
public class Sequence<T extends Comparable<? super T>>
public class Zoo extends Sequence<Animal>