que tienen una clase Java genérico que almacena los elementos de comparación:clase java genérico que almacena los elementos de comparación
public class MyGenericStorage<T extends Comparable<T>> {
private T value;
public MyGenericStorage(T value) {
this.value = value;
}
//... methods that use T.compareTo()
}
también tengo una clase abstracta llamada Persona:
public abstract class Person implements Comparable<Person>
y dos subclases concretas, el profesor y el estudiante :
public class Professor extends Person
public class Student extends Person
ahora cuando quiero crear un MyGenericStorage como tal, me sale un error:
//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());
Creo que esto se debe a que tengo un problema fundamental para comprender los genéricos. ¿Alguien me puede explicar esto y también cómo arreglarlo?
EDIT:
He cambiado MyGenericStorage a lo siguiente:
public class MyGenericStorage<T extends Comparable<? super T>>
y ahora parece que funciona. ¿Alguien puede explicar por qué?
¿Qué pasa si lo cambia a 'clase pública Estudiante extiende persona implementa Comparable'? –