Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将数组中的泛型对象设置为0/null?_Java_Arrays_Oop_Generics - Fatal编程技术网

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

Java 如何将数组中的泛型对象设置为0/null?,java,arrays,oop,generics,Java,Arrays,Oop,Generics,我有一个数组,在我的类声明中保存泛型类型的对象(稍后,我将添加类型对象)。我想删除当前大小的索引(它是一个int)。Eclipse抱怨说,关于行,“类型不匹配:无法将int转换为E” list[currentSize]=null 这是我的密码: ... private int currentSize, maxCapacity; ... public ArrayABC(){ currentSize = 0; maxCapacity = 20;

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

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


提前感谢您的帮助和支持

这完全取决于您的列表的声明方式。 此外,由于您将其强制转换为类型参数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];
  }
}
list = (E[]) new Object[maxCapacity];