如何将数组中的通用对象设置为 0/null?

How do I set a generic object in my array to 0/null?

我有一个数组,在我的 class 声明中包含泛型对象(稍后,我将添加 <Integer> 类型对象)。我想删除 currentSize 处的索引(它是一个 int)。 Eclipse 抱怨 "Type mismatch: cannot convert int to E" 关于行

list[currentSize] = null;

这是我的代码:

...

private int currentSize, maxCapacity;

...

public ArrayABC(){
        currentSize = 0;
        maxCapacity = 20;
        list = (E[]) new Object[maxCapacity];
}

...

public E removeLast(){
        if(currentSize == 0)
            return null;

        list[currentSize] = null;
        currentSize--;
        return list[currentSize];
}

另请注意,在我尝试将列表 [currentSize] 分配为 return 值之后。这样做时是否必须将其转换为 <E>(代码的最后一行)?

我想更好的表达方式是,如何销毁位于 location = currentSize 的对象?

在此先感谢您的帮助和支持!

这完全取决于您的 list 的声明方式。 此外,由于您将其转换为类型参数 E 您必须在 class 声明中的某处使用此类型参数,如下所示:<E>

下面的编译对我来说很好:

public class ArrayABC<E> {

  private int currentSize, maxCapacity;
  private E[] list;

  public ArrayABC(){
          currentSize = 0;
          maxCapacity = 20;
          list = (E[]) new Object[maxCapacity];
  }

  public E removeLast(){
          if(currentSize == 0)
              return null;
          list[currentSize] = null;
          currentSize--;
          return list[currentSize];
  }
}

唯一的问题是 Eclipse 正在突出显示:

list = (E[]) new Object[maxCapacity];

作为不安全访问的警告,但由于类型擦除,没有干净的方法来创建类型为 E 的任何对象的实例。