gpt4 book ai didi

java.lang.ArrayStoreException 在整数数组中存储整数

转载 作者:行者123 更新时间:2023-12-02 10:10:16 26 4
gpt4 key购买 nike

为什么我会收到此异常?

java.lang.ArrayStoreException: java.lang.Integer
at MyLinkedList.toArray(MyLinkedList.java:94)
at MyLinkedListTest.toArray_ReturnGenericArray(MyLinkedListTest.java:80)

我正在创建一个整数数组并传入整数值。那么为什么当我创建相同类型数组的新实例时,我无法为其分配整数值?

@Override
public <T1> T1[] toArray(T1[] a) {
if (a.length < size) {
a = (T1[]) java.lang.reflect.Array.newInstance(a.getClass(), size);
}
Node<T> current = head;
int i = 0;
Object[] result = a;
while (current != null) {
result[i] = current.value;
i++;
current = current.next;
}
// if array has room to spare set element immediately following end of list to null
if (a.length > i) {
a[i] = null;
}
return a;
}

@Test
void toArray_ReturnGenericArray() {
Integer[] array2 = linkedList.toArray(new Integer[4]);
assertEquals(1, array2[0]);
assertEquals(2, array2[1]);
assertEquals(3, array2[2]);
assertEquals(4, array2[3]);
assertEquals(5, array2[4]);
assertEquals(5, array2.length);
}

最佳答案

主要问题是这段代码

a.getClass()

它返回的不是数组的组件的类,而是数组本身,例如

[Ljava.lang.Integer

请参阅[L 前缀。您需要使用

a.getClass().getComponentType()

由于 Array#newInstance 接受组件类型

newInstance(Class<?> componentType, int length)

关于java.lang.ArrayStoreException 在整数数组中存储整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55048988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com