Olá
Antes de apresentar a dúvida, que passou a ser um problema, acho que é bom explicar o que quero fazer.
Montei uma classe em Java que me retorna uma tabela em HTML, informo a coleção e seto o header (th) e passo o método que deve ser chamado na entidade que esta na coleção através de reflection, até ai ok, já está funcionando, diríamos que é uma classe para evitar a criação de tabela na mão.
Ficou super prático e funcional, o objetivo é agilizar o desempenho no processo de desenvolvimento e poder customizar bem a tabela, tarefa que é possível, algo que não consegui com algumas bibliotecas que utilizei como displaytag (apesar de não ter mexido muito com a mesma).
Mas o meu objetivo aqui não é discutir “o como” e opções, um outro tópico seria o mais interessante.
Vamos a dúvida/problema.
Estou utilizando o código abaixo, que foi retirado de um ótimo tutorial que foi postado aqui mesmo no GUJ pelo Daniel Destro http://www.guj.com.br/java.tutorial.artigo.10.1.guj para ilustrar o problema.
Ao rodar este código, temos acesso a informações sobre a classe, no meu caso, Modulo tem uma propriedade de um determinado tipo, exemplo Modulo, ao chamar o método getModulo através do invoke, tenho o resultado do toString, método que foi implementado em Pessoa, porém, quero chamar o getNome que existe na propriedade do tipo Modulo.
public class Classe1 {
public static void main(String args[]) {
try {
Modulo moduloPai = new Modulo();
moduloPai.setNome("Modulo pai nome");
Modulo modulo = new Modulo();
modulo.setNome("Nome do módulo");
modulo.setModuloPai(moduloPai);
Class cls = Class.forName("Modulo");
Method meth1 = cls.getMethod("getNome");
Method meth2 = cls.getMethod("getModuloPai");
Object retobj1 = meth1.invoke(modulo);
Object retobj2 = meth2.invoke(modulo);
System.out.println(retobj1);
System.out.println(retobj2);
}
catch (Throwable e) {
System.err.println(e);
}
}
}
resultado ao rodar o código acima
Nome do módulo
ID: 0 NOME: Modulo pai nome URL: null ATIVO: false NIVEL: null MODULO PAI:
Pois se coloco getPessoa().getNome é lançado uma exception
java.lang.NoSuchMethodException: Modulo.getModuloPai().getNome()
Sugestões?