首页 > 图灵资讯 > 技术篇>正文

【Exception】Exception in thread “main“ java.lang.ArrayStoreException

2023-06-06 09:34:41

案发现场

Exception in thread "main" java.lang.ArrayStoreExceptionat java.lang.System.arraycopy(Native Method)at java.util.Arrays.copyOf(Arrays.java:3213)at java.util.Arrays$ArrayList.toArray(Arrays.java:3831)at com.itplh.TestDemo.main(TestDemo.java:164)

源代码

public static void main(String[] args) {    List<Integer> list = Arrays.asList(1, 2, 3);    String[] array = list.toArray(new String[0]);    for (String s : array) {        System.out.println(s);    }}

原因分析

集合: 集中存储的数据类型是Intger目标数组: 转换成的目标数组数据类型是String 在使用java.util.List#toArray(T[])转换方法时,由于转换前后数据类型不一致,导致报错。

源码:java.lang.System#arraycopy

/** * ... * @exception  ArrayStoreException  if an element in the <code>src</code> *               array could not be stored into the <code>dest</code> array *               because of a type mismatch. */public static native void arraycopy(Object src,  int  srcPos,                                        Object dest, int destPos,                                        int length);

解决方案

调整转换前后的数据类型。

如,将

public static void main(String[] args) {    List<Integer> list = Arrays.asList(1, 2, 3);    Integer[] array = list.toArray(new Integer[0]);    for (Integer s : array) {        System.out.println(s);    }}

控制台输出:

123

上一篇 【Navicat】Cannot load OCI DLL, 87
下一篇 基于注解式的分布式Elasticsearch的封装

文章素材均来源于网络,如有侵权,请联系管理员删除。