我们知道导出类可以向上转型为基类,如:Food 为 Fruit 的基类,则以下代码成立。
Food food = new Fruit();
假设 Food 和 Fruit 同为 Container 类的泛型参数时,它们之间无法执行类型转换。
尽管持有 Fruit 的 Container 和 持有 Food 的 Container 两者之间存储的泛型参数有继承关系,但从容器类 Container 的角度出发,两个容器之间并无任何关联。
public class Food {
}
public class Fruit extends Food{
}
public class Container<T> {
T item;
public Container(T item) {
this.item = item;
}
public T getItem() {
return item;
}
public void setItem(T item) {
this.item = item;
}
}