我正在尝试修改Java Vector以增加大小,如果我访问的元素大于Vector的大小。并在我访问未初始化的元素时插入新元素。
Eclipse抛出不能实例化对象类型。
public static class Vec<Obj> extends Vector<Obj> {
@Override
public Obj set(int a, Obj b) {
if (super.size()<=a) super.setSize(a+1);
return (Obj) super.set(a,b);
}
@Override
public Obj get(int a) {
if (super.size()<=a) super.setSize(a+1);
if (super.get(a)==null) super.insertElementAt( new Obj() , a);
return (Obj) super.get(a);
}
public Vec () {
super();
}
}
无法保证T
具有无参数的构造函数。另外,人们喜欢使用界面,因此T
不太可能是具体的。
因此,请为您的Vector
的构造提供抽象工厂。合适的类型是java.util.function.Supplier<T>
。