| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/03/2004 23:42:19
|
Jair Rillo Junior
Moderador
![[Avatar]](/images/avatar/31b3b31a1c2f8a370206f111127c0dbd.jpg)
Membro desde: 29/04/2003 21:19:53
Mensagens: 2524
Localização: São Paulo / Campinas
Offline
|
Bom pessoal,
estou tentando criar um método no qual eu preencho os dados de vários Bean de uma forma simples e flexível.
Eu estou tentando criar um método, no qual eu passo um certo Bean como Parametro e passo um HashMap contendo os valores, como por exemplo:
esse HashMap poderia representar um Cliente no sistema por exemplo.
Eu passaria esse HashMap e a meu bean, no caso Clientes para o método e ele preencheria os valores automaticamente.
O Algoritmo é mais ou menos assim.
Quando o método for invocado, utilizará reflection na classe que fosse passado como Parâmetro, verificará todos os atributos e e seus métodos (getters e setters), irá comparar os valores do HashMap com o nome do atributo, e utilizar o setXXX(map.get(objeto));
Pegar os valores via reflection sem problemas, isso o método já está fazendo, o problema é quando eu tento criar esse método genérico para todos os meus Bean, na assinatura do meu método, não posso por minha classe direto, e sim uma superclasse de todos meus bean, no caso eu utilizei Object, algo como:
Pois vou utilizar isso tanto para um Bean Clientes, como outro Produtos, outro Funcionarios e assim vai...
A pergunta é...
como dentro do método addValuesToBean, eu vou utilizar os métodos setXXX()?, já que no Object não possui esses métodos? Por exemplo:, supondo que estou com o Clientes, e o Clientes tem o setNome(), eu capturei o método setNome via reflection (até aqui eu consegui fazer na programação), como eu vou poder utilizá-lo?queria algo mais ou menos assim:
o method.getName(), seria algo como "setNome...."
Tem algum modo de conseguir utilizar um método de uma classe que eu capturei via reflection?
Espero que a pergunta fique clara.
Obrigado
Junior
|
Jair Rillo Junior
http://www.jairrillo.com/blog | Twitter | SCJA, SCJP, SCWCD, SCBCD, IBM SOA Associate |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/03/2004 03:21:49
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Vou responder correndo, se precisar de mais ajuda da um toque:
- De uma olhada na API java.beans, especialmente nos PropertyEditors.
- Commons-BeanUtils da Jakarta ja tem isso que vc quer fazer.
- foo.getClass().getDeclaredMethod("nomeDoMetodo", new Class[]);
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/11/2006 20:56:18
|
danccar
Smalltalk
Membro desde: 27/10/2004 11:57:44
Mensagens: 2
Offline
|
Este método "addValuesToBean(Clientes,map);" foi vc q implementou ou o java tem isto?!
ManchesteR wrote:Bom pessoal,
estou tentando criar um método no qual eu preencho os dados de vários Bean de uma forma simples e flexível.
Eu estou tentando criar um método, no qual eu passo um certo Bean como Parametro e passo um HashMap contendo os valores, como por exemplo:
esse HashMap poderia representar um Cliente no sistema por exemplo.
Eu passaria esse HashMap e a meu bean, no caso Clientes para o método e ele preencheria os valores automaticamente.
O Algoritmo é mais ou menos assim.
Quando o método for invocado, utilizará reflection na classe que fosse passado como Parâmetro, verificará todos os atributos e e seus métodos (getters e setters), irá comparar os valores do HashMap com o nome do atributo, e utilizar o setXXX(map.get(objeto));
Pegar os valores via reflection sem problemas, isso o método já está fazendo, o problema é quando eu tento criar esse método genérico para todos os meus Bean, na assinatura do meu método, não posso por minha classe direto, e sim uma superclasse de todos meus bean, no caso eu utilizei Object, algo como:
Pois vou utilizar isso tanto para um Bean Clientes, como outro Produtos, outro Funcionarios e assim vai...
A pergunta é...
como dentro do método addValuesToBean, eu vou utilizar os métodos setXXX()?, já que no Object não possui esses métodos? Por exemplo:, supondo que estou com o Clientes, e o Clientes tem o setNome(), eu capturei o método setNome via reflection (até aqui eu consegui fazer na programação), como eu vou poder utilizá-lo?queria algo mais ou menos assim:
o method.getName(), seria algo como "setNome...."
Tem algum modo de conseguir utilizar um método de uma classe que eu capturei via reflection?
Espero que a pergunta fique clara.
Obrigado
Junior
|
|
|
 |
|
|
|
|