Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Aula 12 Servlet

Olá amigos! Bom, aprendi nessa aula que podemos utilizar o Class.forName para apontar o nome da Classe que queremos instanciar, como no exemplo:

Class type = Class.forName(nomeDaClasse); Tarefa instancia = (Tarefa) type.newInstance(); instancia.executa(req, resp);

Agora, imaginem que quero chamar um determinado método dessa classe, existe alguma maneira de alterar o método "executa" para algum outro parâmetro vindo do request?

Por exemplo, queria criar as classes produto, fornecedor, cliente, por exemplo, chamando os métodos incluir, alterar, listar, etc... Dessa forma, meus request teria não só um parâmetro com o nome da classe, mas também um parâmetro com o nome do método.

Agradeço se puderem ajudar!

2 respostas
solução!

Oi Marcos,

A classe Class possui um método getDeclaredMethod que recebe o nome do método, algo assim:

Class type = Class.forName(nomeDaClasse);

String paramComNomeDoMetodo = request.getParameter(...);
Method metodo = type.getDeclaredMethod(paramComNomeDoMetodo);
Object obj = type.newInstance();
metodo.invoke(obj);

Ok?

abs

Olá Nico!

Olha, muito obrigado pela sua explicação! Realmente resolveu meu problema.

Inclusive, com a sua ajuda, identifiquei que é possível enviar atributos também na chamada do método da classe!

Muito obrigado pela ajuda!