首先,我一直在阅读,以避免可能的重复,我不得不说这似乎没有任何静态声明问题。

我有以下代码:

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());

08-27 22:59