Problema al clonar
Publicado por María (4 intervenciones) el 08/07/2009 10:39:15
Hola!
Tengo una clase Tablero que tengo definida así:
public class Tablero implements Cloneable{
ArrayList tablero;
public Tablero(ArrayList ini){
this.tablero = ini;
}
....................
public Object clone(){
Object tab = null;
try{
tab=super.clone();
}
catch(CloneNotSupportedException ex){
System.out.println(" no se puede duplicar");
}
return tab;
}
Mi otra clase llama de la siguiente forma dentro de un método a Tablero:
public ArrayList posiblesSoluciones (Problema problema){
// Copio el tablero:
Tablero table = (Tablero)problema.getTablero().clone();
// PRUEBA DE Q ES UNA COPIA INDEPENDIENTE!!!!!!!!
ArrayList f = new ArrayList();
((ArrayList)table.getFila(1)).set(0, "xxxxx");
table.ImprimirTablero();
System.out.println("...................................");
problema.getTablero().ImprimirTablero();
Es decir, modifico la copia y luego imprimo tanto la copia como el original. El caso es que me sale el original modificado!
Alguien me puede ayudar?
Gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Tengo una clase Tablero que tengo definida así:
public class Tablero implements Cloneable{
ArrayList tablero;
public Tablero(ArrayList ini){
this.tablero = ini;
}
....................
public Object clone(){
Object tab = null;
try{
tab=super.clone();
}
catch(CloneNotSupportedException ex){
System.out.println(" no se puede duplicar");
}
return tab;
}
Mi otra clase llama de la siguiente forma dentro de un método a Tablero:
public ArrayList posiblesSoluciones (Problema problema){
// Copio el tablero:
Tablero table = (Tablero)problema.getTablero().clone();
// PRUEBA DE Q ES UNA COPIA INDEPENDIENTE!!!!!!!!
ArrayList f = new ArrayList();
((ArrayList)table.getFila(1)).set(0, "xxxxx");
table.ImprimirTablero();
System.out.println("...................................");
problema.getTablero().ImprimirTablero();
Es decir, modifico la copia y luego imprimo tanto la copia como el original. El caso es que me sale el original modificado!
Alguien me puede ayudar?
Gracias!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Valora esta pregunta


0