System.arraycopy获取java.lang.ArrayIndexOutOfBoundsException [英] System.arraycopy getting java.lang.ArrayIndexOutOfBoundsException

查看:744
本文介绍了System.arraycopy获取java.lang.ArrayIndexOutOfBoundsException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

System.arraycopy获取ava.lang.ArrayIndexOutOfBoundsException ..我正在尝试将数据从一个数组复制到下一个数组。但是我遇到了一个例外

System.arraycopy getting ava.lang.ArrayIndexOutOfBoundsException.. I am trying to copy data from one array to the next. but I am getting a exception

private String array[] = { "NO DATA YET" };


 private void setListData()
    {
        String array2[] = { "Iphone", "Tutorials", "Gallery", "Android",    "item 1", "item 2", "item3", "item 4" };
        System.arraycopy(array2, 0, array, 0, array2.length);
    }


推荐答案

您正在尝试复制长度为1的数组中有8个项目。您不能这样做。

You're trying to copy 8 items into an array of length 1. You can't do that.

来自文档


否则,如果以下任何一项为真,则抛出IndexOutOfBoundsException且目标未修改:

Otherwise, if any of the following is true, an IndexOutOfBoundsException is thrown and the destination is not modified:


  • srcPos参数为负。

  • destPos参数为负。

  • length参数为负。

  • srcPos + length大于源数组的长度src.length。

  • destPos + length大于目标数组的长度dest.length

  • The srcPos argument is negative.
  • The destPos argument is negative.
  • The length argument is negative.
  • srcPos+length is greater than src.length, the length of the source array.
  • destPos+length is greater than dest.length, the length of the destination array.

在这种情况下, destPos +长度为8 ,并且 dest.length 为1,因此抛出异常

In this case, destPos + length is 8, and dest.length is 1, hence the exception is being thrown.

请注意,Java中的数组具有固定的长度。如果要使用可扩展容器,请查看 ArrayList

Note that arrays in Java have a fixed length. If you want an expandable container, look at ArrayList.

这篇关于System.arraycopy获取java.lang.ArrayIndexOutOfBoundsException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆