Copiar objeto

3 respostas
K

Como eu faço para ter uma copia do objeto? Usando atribuição, o novo objeto aponta para o objeto anterior.

public void metodo(fclass OBJ1) { fClass OBJ2 = new fClass(); OBJ2 = OBJ1; OBJ2.P1 = 1; OBJ1.P1 = 3; System.out.Println(OBJ2.P1); }

Resultado : 3

Como eu faço para o novo objeto ser independente?

3 Respostas

J

Olá,

Você pode fazer isto da seguinte maneira, ou criando um construtor na sua classe que recebe um objeto do mesmo tipo e copiando os seus atributos, ou implementando a interface Cloneable.

public class Teste implements Cloneable {
 private int valor;
 private int[] valores;

 public Object clone() {
  try {
    Teste t = (Teste) super.clone();
    t.valores = new int[valores.length];
    System.arrayCopy(valores, 0, t.valores, 0, valores.length);
    return t;
  } catch (CloneNotSupportedException e) {
    // Se você implementou a interface Cloneable nunca deve chegar aqui,
    // mas se chegar joga uma exceção dizendo que é erro da máquina virtual
    throw new InternalError();
  }
 }
}

Bom, isto é o básico…
Espero ter ajudado

Flw

M

uma solução seria algo como isto:

class ObjetoASerCopiado {

   private int atributo;

   public ObjetoASerCopiado( ObjetoASerCopiado o ) {

      this.setAtributo( o.getAtributo() );
   }

   public void setAtributo( int a ) { atributo = a; }
   public int getAtributo() { return a; }
}

ai depois poderia fazer algo como:

ObjetoASerCopiado1 o1 = new ObjetoASerCopiado();
o1.setAtributo( 5 );

ObjetoASerCopiado2 o2 = new ObjetoASerCopiado( o1 );
M

cheguei atrasado mas o exemplo é válido :slight_smile:

Criado 13 de fevereiro de 2005
Ultima resposta 13 de fev. de 2005
Respostas 3
Participantes 3