java在尝试从自定义泛型数组中删除元素时遇到类型不兼容的问题
我想对ArrayList进行自己的表示
在我的类中MyList<T>
我正在创建T[] array= (T[]) new Object[size];
在尝试删除元素时,我必须制作另一个数组来比较元素
所以我做了T[] tmpArr=(T[])array;
我想重写除一个元素之外的所有元素,我想删除其中一个元素,但我有错误
当我尝试array[i]=tmpArr[i+1]
或array= tmpArray
任何铸造都不起作用时,我该怎么做?
错误在else if和else中
public void remove() {
T[] tmpArray= (T[]) new Object[realSize];
for(int i=0;i<size;++i){
tmpArray[i]=(T)array[i];
}
for(int i=0;i<size;++i) {
if (i == current - 1) {
} else if (i > current - 1) {
array[i] =tmpArray[i + 1];
} else {
array[i] = (T) tmpArray[i];
}
}
}
# 1 楼答案
这无法工作,因为
new Object[int]
不创建T[]
,因此无法将其强制转换为一个。那么你能做些什么呢?只需要一个Object[]
而不是一个T[]
不要只是复制这个。这只是一个例子,每次大小改变时(通过添加或删除)都会创建一个新数组,这是非常低效的