No entiendo el mecanismo de clonación de objetos personalizados. Por ejemplo:Cómo clonar un objeto Java con el método clone()
public class Main{
public static void main(String [] args) {
Person person = new Person();
person.setFname("Bill");
person.setLname("Hook");
Person cloned = (Person)person.clone();
System.out.println(cloned.getFname() + " " + cloned.getLname());
}
}
class Person implements Cloneable{
private String fname;
private String lname;
public Object clone() {
Person person = new Person();
person.setFname(this.fname);
person.setLname(this.lname);
return person;
}
public void setFname(String fname) {
this.fname = fname;
}
public void setLname(String lname){
this.lname = lname;
}
public String getFname(){
return fname;
}
public String getLname() {
return lname;
}
}
Este es un ejemplo de la manera correcta de clonar como en la escritura de libros. Pero puedo eliminar implements Cloneable en la definición de nombre de clase y recibo el mismo resultado.
Así que no entiendo la propuesta de clonación y por qué el método clone() se define en la clase ¿Objeto?
consulte el Javadoc: http://download.oracle.com/javase/6/docs/api/java/lang/Cloneable.html –
http://stackoverflow.com/questions/2156120/java-recommended-solution-for-deep-cloning-copying-an-instance/2156367#2156367 – Bozho
http: // stackoverflow.com/questions/3180599/javas-clone-method-generator-for-eclipse-galileo/3180729 # 3180729 – Bozho