Problemas para clonar un objeto

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
Avatar de Usuario
Arion
Forista Legendario
Forista Legendario
Mensajes: 2373
Registrado: Jue May 25, 2006 7:00 am

Problemas para clonar un objeto

Mensaje por Arion » Dom Dic 05, 2010 6:38 am

Hola chicos, les vengo con una duda en Java (me esta sacando canas verdes programar en Java...)

tengo algo por este estilo:

Código: Seleccionar todo

MiClase MiObjeto;
for(int i = 0; i < MiObjeto.CosasEnMiObjeto().size(); i++) {
  MiClase Clon = MiObjeto.clone();

  /** Hacerle cositas al clon */
}
El problema que tengo es que necesito que cada vez que pase por la linea

Código: Seleccionar todo

MiClase Clon = MiObjecto.clone();
cree un nuevo clon de "MiObjeto", pero no hace eso, ¡la función me regresa el clon usado!

¿Hay forma de resolver esto?
Muerto hasta donde yo se
Avatar de Usuario
akodo
Moderador
Moderador
Mensajes: 1457
Registrado: Mié Nov 28, 2007 8:00 am
Ubicación: En la X del explorer (pulse para llamar)

Re: Problemas para clonar un objeto

Mensaje por akodo » Dom Dic 05, 2010 1:15 pm

Pues creo que la clase "MiClase" debe implementar la interfaz Cloneable, y sobreescribir el método clone()
Si dentro de la clase "MiClase" tienes más referencias a otros objetos, también tendrás que clonar esas referencias.

Código: Seleccionar todo

public class MiClase implements Cloneable{
  public OtraClase1 oc1;
  public OtraClase2 oc2;
  @Override
  public Object clone(){
    Miclase mia;
    try{
    mia = (MiClase) super.clone();
    mia.oc1 = (OtraClase1) mia.oc1.clone();
    mia.oc2 = (OtraClase2) mia.oc2.clone();
    } catch (CloneNotSupportedException ex) {
        System.out.println("Clon mal hecho");
    }
    return mia;
  }
}
En este enlace lo explica bien:
http://www.sc.ehu.es/sbweb/fisica/curso ... onico1.htm
Descargue el gestor de mp3 "Music Manager" -> ([url=http://ctrlalt.iespana.es]mmlf[/url])
Última versión del gestor "Music Manager" -> ([url=http://sourceforge.net/projects/jmusicmanager/]jmmm[/url])
Avatar de Usuario
Arion
Forista Legendario
Forista Legendario
Mensajes: 2373
Registrado: Jue May 25, 2006 7:00 am

Re: Problemas para clonar un objeto

Mensaje por Arion » Dom Dic 05, 2010 6:26 pm

el problema es que la función clone siempre me mandaba la misma instancia (inclusive haciendo lo que pusiste), lo resolví clonando a mano el objeto...
Muerto hasta donde yo se
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje