不兼容的类型?JAVA
在使用此方法时,我收到一条不兼容类型的错误消息。该方法假定在列表的指定索引处插入指定元素,但不会覆盖该位置的任何现有数据。此方法允许添加到列表末尾以外的第一个索引。例如,如果一个列表的大小为10,则索引9是其逻辑结尾,但此方法允许在索引10处添加一个元素
public void add(int index, java.lang.Object element)
{
int tempCap = myArray.length;
Object[] copyArray;
int count;
if(tempCap < index)
{
tempCap = tempCap * 2;
for(int i = 0; i < tempCap; i++)
{
copyArray[i] = myArray[i];
}
copyArray[index] = copyArray[element];
}
else
{
myArray[index] = myArray[element];
}
}
错误消息:
BasicArrayList.java:53: incompatible types
found : java.lang.Object
required: int
copyArray[index] = copyArray[element];
^
BasicArrayList.java:57: incompatible types
found : java.lang.Object
required: int
myArray[index] = myArray[element];
^
如果索引已经被数据占用,那么假设数组中有足够的容量,数组应该移动以为新条目腾出空间。如果容量不足,则应将阵列复制到新阵列,新阵列的容量应为旧阵列的两倍
此外,我也不确定它们为什么不兼容。我需要使用包装器类吗?在这些代码行中,我想说的是“将这个元素放入数组的这个槽中,无论它是字符串、int、double还是char”
# 1 楼答案
不是应该改成
myArray[index] = element
# 2 楼答案
你得到的错误是不言而喻的。 不能使用int或Integer以外的任何内容作为数组索引
在你的代码中,你绝对应该使用
如果您想使用Java对象作为索引,您可以阅读一些关于
Map
的内容。简而言之,映射是数组,在数组中,索引可以是任意类型(除了基本类型,如int、float等)# 3 楼答案
这对我来说毫无意义。除了试图将对象用作数组索引整数“copyArray[element]”(这是非法语法)之外,还尝试从数组长度的0到2*循环,然后尝试在超出数组边界的索引处访问该数组。当您通过用int替换该对象来修复“Compatible types”错误时,无论何时调用该方法,您都将开始获得ArrayOutOfBounds异常