我有一个通用的 java 类来存储可比较的:
public class MyGenericStorage<T extends Comparable<T>> {
private T value;
public MyGenericStorage(T value) {
this.value = value;
}
//... methods that use T.compareTo()
}
我还有一个名为 Person 的抽象类:
public abstract class Person implements Comparable<Person>
和两个具体的子类,教授和学生:
public class Professor extends Person
public class Student extends Person
现在,当我想像这样创建 MyGenericStorage 时,出现错误:
//error: type argument Student is not within bounds of type-variable T
MyGenericStorage<Student> studStore = new MyGenericStorage<Student>(new Student());
//this works:
MyGenericStorage<Person> persStore = new MyGenericStorage<Person>(new Student());
我认为这是因为我在理解泛型方面存在根本问题。有人可以向我解释一下,以及如何解决吗?
编辑:
我已将 MyGenericStorage 更改为以下内容:
public class MyGenericStorage<T extends Comparable<? super T>>
现在它似乎工作了。有人可以解释为什么吗?