Gerar objetos com base em dois objetos

4 respostas
K

E ai galera blz?

Então estou com o seguinte problema:

Tenho dois objetos do tipo pessoa e gostaria de gerar um terceiro objeto pessoa com os dados dos dois primeiro, o objeto gerado deve conter os atributos do primeiro mais os do segundo sem sobrepor os atributos segue abaixo um exemplo para ilustrar:

Pessoa pessoa = new Pessoa();
		pessoa.setNome("Antonio");
		pessoa.setIdade(new Integer(15));
		
		Pessoa pessoa2 = new Pessoa();
		pessoa2.setRg("123456789");

ai o objeto gerado seria

pessoa3.nome("Antonio")
pessoa3.idade(15)
pessoa3.rg("123456789")

Não sei se ficou claro a minha duvida, mas se alguem puder ajudar eu agradeço

4 Respostas

Basilio

Vc teria que criar um metodo que faria isso.
Minha sugestao eh q no construtor de pessoa vc sete todos os atributos como NULL.
No metodo que vc chamar o metodo vc verifica se cada atributo eh diferente de NULL, se for vc adiciona no objeto de retorno.

public Pessoa(){
   nome =NULL;
   idade = NULL;
   rg=NULL;
}

public Pessoa junta(Pessoa p1, Pessoa p2){
   Pessoa r = new Pessoa();
   if(p1.getNome!=NULL){
   r.setNome(p1.getNome);
   }

   .
   .
   .

   if(p2.getRg!=NULL){
   r.setRg(p2.getRg);
   }

   .
   .
   .

   return r;
}
Z111

Sempre os dados do primeiro vai prevalecer sobre os dados do segundo ? Ou seja, se o ambos os objetos tiverem o atributo “nome” preenchido, fica o valor do primeiro objeto?

fabiocsilva

Meio estranho isso de copiar uma instância de Pessoa em outra, mas pode fazer assim:

public class Pessoa {
  private String nome;//...

  public Pessoa(){}
  
  public Pessoa(Pessoa p){
    this.nome = p.nome;//... ou então usa o BeanUtils pra copiar os valores via reflexão
  }
}


Pessoa p1 = new Pessoa();  
p1.setNome("Antonio");  
p1.setIdade(new Integer(15));

Pessoa p2 = new Pessoa(p1);  
p2.setRg("123456789");

Nesse caso alterando o valor em um vai alterar no outro também…

K

Então galera consegui resolver parte do meu problema.
Por reflection eu consegui resolver parte do meu problema, os atributos simples(String, Integer,Double) desse objeto deu certo por reflection, agora os atributos que são outros objetos(Endereco por exemplo) não funciona.
Sera que alguem pode ajudar?

Criado 19 de julho de 2010
Ultima resposta 20 de jul. de 2010
Respostas 4
Participantes 4