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];