Boa tarde pessoa,
eu tenho a seguinte situação: aluno.getPessoa().setNome(“João”);
como eu posso pegar o nome “João” por reflection?
eu já procurei no google e aqui no fórum, mas não encontro alguma informação. Não sei se estou usando a pesquisa errada.
Se alguém souber como fazer ou onde encontrar a resposta eu agradeço. =]
esse tutorial me ajudou iniciar com reflection
http://www.guj.com.br/articles/10
caso surja uma nova duvida entre em contato
abrasss
Muito obrigado renan!
Serviu o post. Consegui fazer.
o usuário passa uma string do tipo “o.funcionario.pessoa” e eu tinha que pegar o valor de pessoa. Daí peguei essas informações nesse tutorial que me permitiram pegar o valor de fucionário de pois e de pessoa, resolvendo meu problema:
Class cls = Class.forName(obj.getClass().getName());
Method meth = cls.getMethod(campoSubS, null);
obj = meth.invoke(obj, null);
no final das contas ficou assim meu código:
for(String campo : campos){
//criando array com todos os itens da pesquisa. ex.: o.usuario.pessoa -> [o] [usuario] [pessoa]
String[] campoConsultaDesmembrado = campo.split("\\.");
//a variável campoSubS recebe o nome do item do campoConsultaDesmenbrado alterado para o padrão de um método get no camelcase. ex.: getUsuario ou getPessoa
String campoSubS = "";
Object obj = instancia;
//laço que pecorre todos os níveis do hql para para poder pegar o valor que será consultado. ex.: o.usuario.pessoa -> primeiro vai pegar o getUsuario para depois pegar o getPessoa
for(int i = 1 ; i < campoConsultaDesmembrado.length; i++){
String campoConsulta = campoConsultaDesmembrado[i];
campoSubS = "get".concat(campoConsulta.substring(0,1).toUpperCase().trim().concat(campoConsulta.substring(1).trim()));
if(obj != null){
Class cls = Class.forName(obj.getClass().getName());
Method meth = cls.getMethod(campoSubS, null);
obj = meth.invoke(obj, null);
}
}
não sei se é o melhor que tem, mas é o melhor que eu consegui fazer e está funcionando. =D
vlw pela ajuda.
parabens cara! precisando estamos ai
precisou disso pra fazer validações?
abrasss
isso, eu precisava pegar o hql informado pelo programador e pegar o valor na instância para poder comparar no select.
expliquei direito? :s
ahhaah explicou sim, perguntei pq tinha passado por uma situação semelhante semana passada ahahah
abrasss