Objetos do combo sendo alterados  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
jr.mg
JavaChild

Membro desde: 25/07/2006 22:39:04
Mensagens: 131
Offline

Bom dia pessoal.
Estou com uma dúvida que é a seguinte:
Adiciono objetos a um JComboBox ...até ai blz.
Aí eu atribuo um desses objetos selecionado no combo a uma classe do mesmo tipo e altero os valores, pois preciso adicionar em um List.
Aqui entra meu problema.
Quando pego esse objeto e altero, ele altera também o objeto do combo.
Pelo que entendi, mesmo eu criando uma nova instancia da classe, ela ainda tem referência com o objeto selecionado.
Como faço para não acontece isso.

Desde já agradeço.

Júnior
eclipso
JavaEvangelist

Membro desde: 07/12/2006 12:57:04
Mensagens: 446
Offline

Você está alterando o objeto do combo. Pois está trabalhando sobre uma referência dele, ao que tudo indica...

Se você quer modificar os dados que obtém daquele objeto, sem alterar o objeto., gera um clone dele e trabalhe sobre ele...

CV: http://lattes.cnpq.br/0044387433155250
uchoaaa
JavaChild

Membro desde: 01/04/2006 21:02:33
Mensagens: 133
Offline

jr.mg wrote:
Pelo que entendi, mesmo eu criando uma nova instancia da classe, ela ainda tem referência com o objeto selecionado.


Não é bem assim.
Quando vc cria um novo Objeto de uma Classe, utilizando o operador NEW, vc está criando uma NOVA instância dessa Classe.
Ela referencia um NOVO objeto na memória.

Vc pode estar confundindo com passagens de argumentos, que é por REFERÊNCIA.
Ou seja, toda vez que vc passar aquele objeto para algum método, vc está passando o endereço dele na memória.

Na prática:



Se vc quer uma cópia desse seu objeto, sobrescreva o método clone() e o utilize.



[]s
jr.mg
JavaChild

Membro desde: 25/07/2006 22:39:04
Mensagens: 131
Offline

Me dê um exemplo de como ficaria com o método sobrescrito.

Obrigado

Júnior
uchoaaa
JavaChild

Membro desde: 01/04/2006 21:02:33
Mensagens: 133
Offline

uchoaaa wrote:

Na prática:



Se vc quer uma cópia desse seu objeto, sobrescreva o método clone() e o utilize.



[]s


jr.mg
JavaChild

Membro desde: 25/07/2006 22:39:04
Mensagens: 131
Offline

Onde está o metodo clone ?
Gostaria de ver como fica o metodo clone, o código dentro dele.

Júnior
uchoaaa
JavaChild

Membro desde: 01/04/2006 21:02:33
Mensagens: 133
Offline

Clone() é um método definido em Object.
Como ele é protegido (protected) vc não terá acesso direto pelo seu objeto. Vc deve subscrevê-lo lá na sua classe, lembrando de alterar a visibilidade para public, se convir.
Nele vc deve copiar os valores para um novo objeto, que será retornado.

Algo mais ou menos assim.



e



E a saída desse programa vai ser..



Sacou?!

Tem uns links aqui..
http://java.sun.com/javase/6/docs/api/java/lang/Object.html#clone()
http://en.wikipedia.org/wiki/Clone_(Java_method)

Espero ter ajudado agora..

[]s
jr.mg
JavaChild

Membro desde: 25/07/2006 22:39:04
Mensagens: 131
Offline

uchoaaa, obrigado por responder...mas agora meu problema complicou..pois dentro desse objeto eu tenho um arrayList de objetos...postei no aqui no forum veja:

http://www.guj.com.br/posts/list/102768.java

Júnior
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team