gpt4 book ai didi

java - 使用泛型数组时抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:46:53 25 4
gpt4 key购买 nike

我有一个 ArrayStoreException,在以下情况下我不明白:

文件列表.java:

import java.lang.reflect.Array;
class List<K> {
K[] _list;
K _dummy;
int _size, _index;

public List(int size) {
_size = size;
_index = 0;
Class<?> cls = getClass();

// as following is not allowed
// _list = new K[size]; --> cannot create a generic array of K
// I'm doing the following instead
_list = (K[])Array.newInstance(cls,size);
}

public void add(K obj) {
_list[_index++] = obj; // HERE'S THE EXCEPTION
// java.lang.ArrayStoreException ??

// IF I ASSIGN _dummy INSTEAD
_list[_index++] = _dummy; // NO ERROR
}
} // class List

文件 mainLists.java:

public class mainLists {    
public static void main(String[] args) {
List<String> list = new List<String>(5);
list.add("test");
}
}

文档对 ArrayStoreException 的看法:“抛出表示已尝试将错误类型的对象存储到对象数组中”

但是我将字符串类型“test”传递给方法 add() 否?

这里有什么问题?

谢谢

克里斯

最佳答案

你的数组是 List 的数组,而不是 K 的数组,因为你用它实例化了它

Array.newInstance(cls,size);

其中 cls 初始化为

Class<?> cls = getClass();

它返回当前对象类,即 this 的类。

您可以简单地使用 Object[]

关于java - 使用泛型数组时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935549/

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