【发布时间】:2020-09-29 06:39:34
【问题描述】:
我正在创建一个包含类型为Object[] 的实例变量名为array 的类。此类包含一个返回T[] 的方法,其中T 是一个泛型。该方法应该将array 的内容复制到要返回的数组中。相关代码如下所示:
@SuppressWarnings("unchecked")
T[] arr = (T[])Array.newInstance(a.getClass(), array.length);
for (int i = 0; i < array.length; i++) {
@SuppressWarnings("unchecked")
T temp = (T)array[i];
arr[i] = temp;
}
return arr;
在上面的 sn-p 中,a 是另一个作为参数传递的数组。
问题是,当我调用该方法时,它会抛出一个ArrayStoreException。我不确定为什么要这样做,因为我将初始值转换为类型T,然后将其存储在类型为T[] 的数组中,因此类型匹配。为什么还是抛出异常?
【问题讨论】:
标签: java arrays generics casting arraystoreexception