Como se copia um objeto

5 respostas
renatosilva

Preciso fazer um backup de um objeto, mas a simples atribuição funciona como um ponteiro.

Como eu faço uma nova cópia independente???

5 Respostas

Rafael_Steil

Faca uma copia usando uma instancia nova. Por exemplo:

Class Foo {
    private String nome;
    private int idade;

    public Foo() {}
    public Foo(Foo foo) {
        this.nome = foo.getNome();
        this.idade = foo.getIdade();
    }

    // getters e setters
}

...

Foo f1 = new Foo();
f1.setNome("foo 1");
f1.setIdade(10);

Foo f2 = new Foo(f1);

Rafael

renatosilva

Falou, mas o problema é que a classe é LinkedList

Rafael_Steil

Entao simplesmente passe a lista atual como argumento para a nova. Todos os metodos da Collections suportam copy constructors. E, caso isso ainda nao te agrade ( ainda nao? ), entao crie uma list nova e va iterando elemento por elemento da lista original, copiando-os para a nova lista.

Rafael

Lucas_Teixeira

Eu fico com a proposta da interface Cloneable

LinkedList a implementa e não é complicada de usar. Depois de implementar, chame o método clone() que já é herdado de Object.

Rafael_Steil

Entao, mas implementar o clone() eh mais complicado e chato que fazer um copy constructor :wink:

Rafael

Criado 27 de dezembro de 2004
Ultima resposta 27 de dez. de 2004
Respostas 5
Participantes 3