如果元素为空,尝试修改Java Vector的get()以创建新的T()

问题描述 投票:0回答:1

我正在尝试修改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();  
        }
    }
java vector new-operator
1个回答
0
投票

无法保证T具有无参数的构造函数。另外,人们喜欢使用界面,因此T不太可能是具体的。

因此,请为您的Vector的构造提供抽象工厂。合适的类型是java.util.function.Supplier<T>

© www.soinside.com 2019 - 2024. All rights reserved.