| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2008 09:21:38
|
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2008 10:15:08
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2008 12:40:02
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2008 07:12:28
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 07/07/2008 07:46:41
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/07/2008 07:58:34
|
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/07/2008 19:03:42
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 11/09/2008 08:58:23
|
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 |
|
|
 |
|
|