有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将数组中的泛型对象设置为0/null?

我有一个数组,它在我的类声明中保存泛型类型的对象(稍后,我将添加<Integer>类型的对象)。我想删除当前大小的索引(它是一个int)。Eclipse抱怨说,关于行,“类型不匹配:无法将int转换为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]指定为返回值之后。在执行此操作时是否必须将其强制转换为<E>(代码的最后一行)

我想更好的方法是,如何在location=currentSize处销毁对象

提前感谢您的帮助和支持


共 (1) 个答案

  1. # 1 楼答案

    这完全取决于您的列表的声明方式。 此外,由于您将其强制转换为类型参数E,因此必须在类声明中的某个位置使用此类型参数,如下所示:<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的对象的实例