[RESOLVIDO] Como copiar objetos estáticos (para não alterar o original)?

8 respostas
geidivan

Como faço para copiar o valor de um objeto para outro objeto? Gostaria de ter um objeto igual mas não idêntico.

Vi sobre o clone() mas eu estou usando um List de um tipo específico que criei. Essa opção clone não aparece.

8 Respostas

ignacio83

Vc tem que sobreescrever o método clone. Ele é protegido por padrão.

Vc vai ter que fazer na mão… Se sua classe fosse um Bean dava para utilizar algumas classes utilitárias da apache para fazer a cópia.

Ex: BeanUtils.copyProperties

Leandro_Vecchi

Não bastaria criar outro objeto do mesmo tipo e fazer ele receber o objeto que deseja copiar?

sergiotaborda
geidivan:
Como faço para copiar o valor de um objeto para outro objeto? Gostaria de ter um objeto igual mas não idêntico.

Vi sobre o clone() mas eu estou usando um List de um tipo específico que criei. Essa opção clone não aparece.

Igual mas não identico é boa...

Vc usa clone.

public class X extends Cloneable{


  public Object clone(){
             return super.clone();
  }

}
geidivan

Ok. Implementei o clone e funcionou.

Leandro Vecchi, não dá porque o objeto é estático e final, ou seja, quem for atribuido a ele passará a apontar para a mesma área de memória. Se você igualar esse objeto a outros 10, todos terão sempre o mesmo valor. Na verdade você não iguala, mas “aponta” para o mesmo valor.

sergiotaborda, dentre os conceitos de objetos e persistência de objetos existe os tipos igual e idêntico. O objeto igual possui mesmo valor mas endereço de memória diferente. Objetos idênticos possuem o mesmo id em memória. Não entendi o porquê do “boa”. Uma boa lida em livro de tecnologias de banco de dados e conceitos de objetos te ajudará a entender melhor.

Obrigado pela ajuda pessoal.

fbeli

Leandro Vecchi:
Não bastaria criar outro objeto do mesmo tipo e fazer ele receber o objeto que deseja copiar?

isso vc copia o mesmo objeto e com isso irá modifica-lo

thegoergen

Eu não sabia dessa.

E nem te estressa, ele só não sabia e achou que você tinha se enganado. =D

thegoergen

Eu não sabia dessa.

E nem te estressa, ele só não sabia e achou que você tinha se enganado. =D

geidivan

Que isso, estressei nao, me desculpe se falei mal.

Disse isso porque eh bom para melhorar o conceito daqueles que vao ler este topico. Eu tambem fiquei sabendo sobre isso a pouco tempo, mas eh um conceito importante que pode evitar problemas basicos de manipulacao de objetos.

Criado 19 de dezembro de 2008
Ultima resposta 19 de dez. de 2008
Respostas 8
Participantes 6