Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ana Fontoura

[Resolvido] Copiando objetos

Recommended Posts

olá pessoal, eu gostaria de saber como faço para copiar um objeto (instanciando um novo objeto para guardar a cópia).

 

a questão é a seguinte:

tenho um vetor de objetos vet1[10] instanciado, agora quero criar uma cópia deste vetor, guardando a informação dele em um segundo vetor vet2[10]..

 

como vocês ja devem saber, o código a seguir não funciona, pois ele faz com que os objetos de vet2 apontem para o local da memoria onde estão os objetos de vet1:

 

for(int x; x<10; x++){

vet2[x]=vet1[x];

}

 

como faço então para que vet2 receba os valores de vet1 sem apontar para o mesmo? (imagino que exista uma solução melhor do que passar cada um dos atributos na mão)

 

Obrigada :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas...

é o seguinte, o jeito é você criar os novos objetos e sectar o estado dos objetos atuais nos novos objetos, vou tentar dar um exemplo: imagine que você tenha uma class Aluno

 

// class Aluno
public class Aluno {
    private int idade;
    private String nome;
    
    public Aluno(int idade, String nome) {
        this.idade = idade;
        this.nome = nome;
    }
    public void setIdade(int idade) {
        this.idade = idade;
    }
    public int getIdade() {
        return this.idade;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getNome() {
        return this.nome;
    }
}

aqui você cria o vet1 e preenche com objetos alunos

public static void main(String[] args) {
    Aluno[] vet1 =  new Aluno[10];
    for(int i=0;i<10;++i) {
        vet1[i] = new Aluno("Nome"+i, i);
    }
}

agora se você quiser que um segundo array( vet2) tenha referencias para novos objetos, mas que esses objetos tenham o mesmo conteudo que os do vet1 você precisará fzr isso

 

Aluno[] vet2 =  new Aluno[10];
for(int i=0;i<10;++i) {
   vet2[i] = new Aluno(vet1[i].getName(), vet1[i].getIdade());
}

repare no código acima que vet2 está recebendo a referencia de um novo objeto cujo conteudo será o mesmo dos objetos de vet1

 

Minha resposta foi útil? Clique aqui e me dê um bonus virtual!

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Qualquer dúvida é só postar..

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.