首先,我一直在阅读,以避免可能的重复,我不得不说这似乎没有任何静态声明问题。
我有以下代码:
String[] bonoActual = (String[]) it.next();
String[] auxBono = new String[3];
ArrayList<String[]> bonosTemp = new ArrayList<String[]>();
ArrayList<Integer> abosTemp = new ArrayList<Integer>();
System.out.println("Añadiendo: "+bonoActual[0] + "a bonostemp");
bonosTemp.add(bonoActual);
abosTemp.add(abo);
auxBono[0] = aux;
auxBono[1] = String.valueOf(udsPrecio[1]);
auxBono[2] = fecValor;
bonosTemp.add(auxBono);
abosTemp.add(abo);
System.out.println("Añadido: "+auxBono[0] + "a bonostemp");
已从其他来源正确分配了aux,abo和fecValor的值,正在循环中初始化bonoActual并从其他来源进行检索,这是控制台输出:
Añadiendo: BONO DATOS 1 GIGA AGOSTO (-) BONO VOZ 100 MINUTOS AGOSTO (-)a bonostemp
Añadido: BONO DATOS 1 GIGA SEPTIEMBRE (-)a bonostemp
这是正确的,但是当我在调试时查看
bonosTemp
时,两个条目在数组值的位置0都具有该值: BONO DATOS 1 GIGA SEPTIEMBRE (-)
任何想法为什么会发生这种情况?
最佳答案
您将相同的数组重复添加到bonosTemp
。结果,bonosTemp
的每个元素都引用相同的数组。修改数组时,所有元素bonosTemp
似乎都立即更改(因为它们是同一对象)。
要解决此问题,请添加数组的副本:
bonosTemp.add(auxBono.clone());