【发布时间】:2013-01-19 16:00:33
【问题描述】:
为了制作包含值副本而不是通过引用的数组的副本,我执行以下操作:
int[][][] copy = {{{0}},{{0}},{{0,0}},{{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},{{0}},{{0,0}}};
System.arraycopy(spelerSpel, 0, copy, 0, spelerSpel.length);
然后在副本中更改一个值:
copy[SPELER_NUMMER][0][0] = baanSpelerNummer;
这会导致 ORIGINAL (spelerSpel) 数组保持相同的更改值,例如:
{{{4}},{{0}},{{0,0}},{{0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0}},{{0}},{{0,0}}};
作为副本。我也试过 .clone(),同样的结果。我做错了什么?
顺便说一下,我的目标是 Android API 8,它不支持 Arrays.copyOf()。
【问题讨论】:
-
我不确定,但从文档来看,它听起来不像 arraycopy 是递归的——它会复制最外层的数组,但不会递归地复制多维数组的内部数组。你可能需要自己动手。