Cara isso acontece pq os dois objetos estão usando o mesmo endereço de memória… passe os valores para outra classe não o objeto todo…
Hebert_Coelho
Cara, note o seguinte:
Pessoa a = new Pessoa();
Pessoa b = a;
Vc está falando,
Ei, objeto A vc vai receber uma pessoa nova. Já vc, objeto B vai apontar para a mesma pessoa que o A está apontando.
Por isso que quando vc altera em um, o resultado está alterado no outro tb! [=
R
raghy
tem o codigo ai[url]?
S
sergiom
Se você estiver usando atributos static também irá ocorrer este problema…
marcos1EM
Se vc quer manipular uma cópia do objeto sem ter vinculo com o objeto original, vc pode usar o metodo clone. para isso vc deve implementar a interface Cloneable em sua classe por exemlo:
publicclassMinhaClasseimplementsCloneable{//atributos//gets e sets}MinhaClassecAntiga;// objeto q sera clonado estando portando com os atributos ja setadosMinhaClassecNova=cNova=(MinhaClasse)cAntiga.clone();//Fazendo a cópia
leonardofl1 like
Na verdade eu não sei bem o porquê, mas sei que o método clone() não é algo muito trivial de se usar, pois pode trazer algumas complicações, sendo melhor evitá-lo a menos que você realmente entenda como funciona.
Então a melhor solução parece ser mesmo um método que copia na mãos os campos de uma classe para uma nova classe. Mas cuidado… se vc copiar campos que sejam objetos (não primitivos, ex: atributo Dog da classe Pessoa) com o operador “=” pode acabar com o mesmo problema,
carlos_maia
Ola pessoal consegui resolver passando todos os atributos do objeto antigo para o novo objeto através do set
Muito importante isto: em Java a String por padrão (da JVM) é 1 Objeto Imutável.
Então, os testes q v6 fizeram “podem” estar furados…
Explico: se a sua Classe tiver qualquer Atributo, q é 1 Objeto de outra Classe, (q não seja Imutável), na verdade, no Objeto de origem, pode estar contendo a mesma referencia do AtributoObjeto, no Objeto de destino, entende??!
Uma solução realmente efetiva seria fazer a combinação de 2 técnicas|padrões: o Defensive copying com o Copy constructors
Desta forma o State das suas Classes Entidades de Negócio estará mais seguro, mesmo elas transitando no Front-End!! 8)
Espero ter contribuido…