Copiando um Javabean para outro Javabean (RESOLVIDO)

Preciso de um pequeno help aqui, preciso transferir o valor das propriedades de um objeto Javabean para outro.

Tenho parte do método pronto mas não estou sabendo como dar o set nas propriedades do objeto destino, já os get das propriedades do objeto origem estou recuperando sem problemas.

Estou passando um exemplo do que quero com um Javabean bem simples, no final quero que o contaDestino tenha os mesmos valores que tem no contaOrigem.

Método:

[code]public static Object copiarJavabean(Object origem, Object destino) {
Class classeOrigem = origem.getClass();
Method[] metodosOrigem = classeOrigem.getDeclaredMethods();
Class classeDestino = destino.getClass();
Method[] metodosDestino = classeDestino.getDeclaredMethods();

for (int i = 0; i < metodosOrigem.length; i++) {
    Method metodoOrigem = metodosOrigem[i];
    Method metodoDestino = metodosDestino[i];

    if (metodoOrigem.getName().startsWith("get") || metodoOrigem.getName().startsWith("is")) {
        Object value;
        try {
            value = metodoOrigem.invoke(origem, new Object[]{});
            System.out.println("Nome do metodo: "+metodoOrigem.getName() + ", valor = " + value);
            // Aqui preciso setar a propriedade do Destino com o 'value' do origem
        } catch (IllegalAccessException ex) {
            Logger.getLogger(Lib.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalArgumentException ex) {
            Logger.getLogger(Lib.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InvocationTargetException ex) {
            Logger.getLogger(Lib.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
return destino;

}[/code]

Chamada para fazer a cópia:

[code]Conta contaOrigem = new Conta();
contaOrigem.setCodigo(1);
contaOrigem.setCodigoGrupo(2);
contaOrigem.setEmUso(true);
contaOrigem.setNome(“Conta Exemplo”);

Conta contaDestino = new Conta();
contaDestino = (Conta)copiarJavabean(contaOrigem, contaDestino);
[/code]

Qualquer ajuda é bem vinda.

Como os objetos são idênticos, você pode usar a classe BeanUtils da apache:

BeanUtils.copyProperties(Object dest, Object orig)

:thumbup: Blz? Flw!

Não amigo, não quero usar mais classes de terceiros, por isso eu estou implementando esse método.

De qualquer maneira, obrigado por responder.

Clonar o objeto, implementando a interface Clonable na classe, não te serve?

Abraço

o problema de usar reflexão, como vc está usando, são em casos como esse:

public class Pessoa {

  private Date dataNascimento;

  public void setDataNascimento(Date data){
   //bla bla bla
 }

  public Date getDataNascimento(){
   //bla bla bla
 }

 // problema
 public Integer getIdade(){
   //bla bla bla
 }

}

se for utilizar reflexão, vai ter que ficar esperto para não dar set em propriedade que não existe.

Com Clonable, vc não teria esse problema, digo vc estaria controlando o que está fazendo.