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:
HashMap map = new HashMap();
map.put("codigo",1);
map.put("nome","Junior");
map.put("cidade",'Bauru");
addValuesToBean(Clientes,map);
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:
public void addValuesToBean(Object objeto,HashMap map) {..}
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:
objeto.method.getName()(map.get("nome"));
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