如何将数组中的通用对象设置为 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 的任何对象的实例。
我有一个数组,在我的 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 的任何对象的实例。