【发布时间】:2014-11-03 04:55:09
【问题描述】:
以下java文本中add方法有错误:
import java.util.Vector;
public class test {
Vector<? extends CellObject> v = new Vector<>();
class Cell extends CellObject {
// some definitions here
public Cell() {
v.add(this);
}
}
}
为什么我不能使用有界通配符?我的问题是在创建向量 v 的那一刻(并且在那个地方)我真的不知道将存储在向量中的未来子类。
我知道在这种情况下
Vector<CellObject> v = new Vector<>();
不会有错误,但向量的组件不属于 CellObject 类。
【问题讨论】:
-
为什么要使用过时/遗留的
java.util.Vector集合(与具体问题无关)? -
请注意,
<>在这两种情况下都会扩展为<CellObject>。两个向量具有相同的类型。唯一的区别是,在第一种情况下,您在v上使用了更通用的类型。
标签: java