Clonar Objetos
Hola a todos
Una disculpa por la pausa que tuvimos, pero como saben, el trabajo absorve una enorme cantidad de tiempo.
Continuando con los post de Java este tratará sobre como clonar objetos. La clontación es más frecuente de lo que realmente se piensa, existen dos tipos de clonación, la profunda y la superficial. La superficial copia un objeto del mismo tipo, no copia los miembros static; para los miebros de tipo primitivo, se hace una copia de su valor, las referencias se copian, es decir, siguen apuntando al mismo objeto. La copia profunda duplica todo.
Para clonar objetos hacemos uso de la interfas Cloneable, ya que si omitimos este paso nos lanzará una exception de tipo java.lang.InternalError.
Pues como siempre, después de una breve explicación pasamos a dejar código, el cual es mucho más claro que las palabras, aunque no las sustituye.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/package org.clitec.test.otherCases;
/**
*
* @author lyonn
*/
public class CClaseClonar implements Cloneable{private String nombre=”Rodrigo”;
private String apellido = “Ramos”;public Object clone()
{
try {
return super.clone();
} catch (Exception e) {
throw new InternalError(e.toString());
}
}public String getNombre()
{
return nombre;}
public String getApellido()
{
return apellido;
}
public void setNombre(String nombre)
{
this.nombre = nombre;
}
public void setApellido(String apellido){
this.apellido = apellido;
}
}
EL siguiente código implementa lo ya hecho
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.clitec.test.otherCases;/**
*
* @author lyonn
*/
public class CMainCloneable {public static void main(String[] args) {
CClaseClonar cclonar = new CClaseClonar();
CClaseClonar cclonar2 = (CClaseClonar) cclonar.clone();
System.out.println(”cclonar nombre: ” + cclonar.getNombre());
System.out.println(”cclonar apellido: ” + cclonar.getApellido());
System.out.println(”Modificamos nombre y apellido de cclonar”);
cclonar.setNombre(”Frida”);
cclonar.setApellido(”Contreras”);
System.out.println(”cclonar2 nombre: ” + cclonar2.getNombre());
System.out.println(”cclonar2 apellido: ” + cclonar2.getApellido());
System.out.println(”Modificamos nombre y apellido de cclonar2″);
cclonar2.setNombre(”Pancho”);
cclonar2.setApellido(”Pachanclas”);
System.out.println(”cclonar nombre: ” + cclonar.getNombre());
System.out.println(”cclonar apellido: ” + cclonar.getApellido());
System.out.println(”cclonar2 nombre: ” + cclonar2.getNombre());
System.out.println(”cclonar2 apellido: ” + cclonar2.getApellido());
System.out.println(”cclonar nombre: ” + cclonar.getNombre());
System.out.println(”cclonar apellido: ” + cclonar.getApellido());
}
}
Bien, fue un pequeño post, pero creo que es muy claro y va al punto, espero les funcione correctamente y cualquier cosas estamos abiertos a sus comentarios
Saludos


