Executar um Metodo dinamicamente, ( e instanciando) em tempo de execucao.[RESOLVIDO...ufa...rss]

9 respostas
G

ola a todos !!!

abaixo, um bloco (resumido) de codigo, pra poder melhor explica uma necessidade:

puclic String NomeDaClasse = "";
public String NomeDoPackage = "";
public class ClassMetodo1 {
    public void MetodoString1() {
        String teste1 = "Teste1()";
        ExectMetodo(teste1);
    }
}
public class ClassMetodo2 {
    public void MetodoString2() {
        String teste2 = "Teste1('teste2',10)";
        ExectMetodo(teste2);
    }
}
public class ClassMetodo3 {
    public void MetodoString() {
        String teste3 = "Teste1(10,teste3,20)";
        ExectMetodo(teste3);
    }
}
public class ExecMetodo{
    public ExecMetodo(String metodo){
        
    }
}

eu preciso fazer executar o ExecMetodo pegando o parametro, para:

  1. executar o metodo do parametro, creio q instanciando em tempo de execucao;
  2. saber se esse metodo tem algum retorno;
  3. retornar o retorno;

mas assim… olhado esse exemplo ate q (creio) nao seria dificel… mas preciso q isso seja dinamico, esse ExecMetodo, recebe outras tantas chamadas todas por string.

aaaaaaa… detalhe: no momento de chegar a o parametro de string pro ExecMetodo, eu ja estou sabendo cual eh a classe do metodo e cual eh o package.

nao sei se me fiz entender…

de antemao, agradeco a quem foi ajudar… MUITO OBRIGADO !!!

9 Respostas

maior_abandonado

da uma olhada nesse tutorial aqui mesmodo guj.

acredito ser o que vc quer.

G

ola…

obrigado pela dica… demorei pq estou estudando bem esse topico, porque, creio, q eh isso mesmo q estou precisando…

mas, to vendo q vou precisar de ajudas ainda… mas deixa ir estudando melhor…

obrigado mesmo !!!

G

agora apertou… e to precisando ajuda !!!

aquele tutorial era realmente o q eu estou precisando !

mas assim: imaginam q tem varios metodos, e uns retornar String, outros retornam int, outros retornam boolean, etc…

estou fazendo um metodo q recebe por parametro uma String (metodo a ser executado) para executar, assim:

String a = ExecMetodo( "MetodoRetornaString( cParam1 , nParam2, lParam3 )" );
int b = ExecMetodo( "MetodoRetornaInt(nParam1 , cParam2, lParam3)" ) ;
boolean c = ExecMetodo( "MetodoRetornaBoolean(lParam1 , cParam2, nParam3)" ) ;

e esse metodo sabe cual eh o package, a classe, os parametros, o retorno, etc (tudo aquilo do tutorial).

ate aki esta tudo 2 mil % (hehehehe).

o problema eh exatamente nisso: normalmente se executa assim:

String a = MetodoRetornaString( cParam1 , nParam2, lParam3 );
int b = MetodoRetornaInt(nParam1 , cParam2, lParam3);
boolean c = MetodoRetornaBoolean(lParam1 , cParam2, nParam3);

mas…

  1. com os recursos do tutorial, como fazer a declaracao da variavel (String, int, boolean) de forma generica (diferente da normal acima) ?

  2. como fazer pro metodo ExecMetodo poder retornar, hora String, hora int, hora boolean, etc ??? (eu ja sei qual eh o tipo do retorno)

desde ja agradeco: MUITO OBRIGADO !!!

E

Isso é mais chato que parece, e requer uma linguagem mais dinâmica que Java. Não quer estudar Javascript, Python, Groovy?

G

serio ???

no java eh complicado mesmo ???

ate o clipper (summer) de 20 anos atraz ja fazia isso…

nao posso fazer nessas q falow (Javascript, Python, Groovy) q eh java pra desktop mesmo !!!

quase nao to conseguindo acreditar q nao tem como fazer

agora fiquei frustrado com o java…hehhehehehehe

o java… quase no ano de 2010… perder nesse recurso pra clipper… de 20 anos atraz…rssss

G

Se ninguem respondeu todos esses dias, intao, eh porque estou laskado mesmo (rss) ???

[]'s

G

laskado eh apelido ! to (pip) !!! hehehe

rsss

deixando brincadeiras a partes: serio mesmo q eh assim ? nao faz mesmo ? ainda dificel acreditar q clipper de 20 anos atraz faz e java nao, nem q for de uma outra forma…sei lah !

obrigado !!!

sergiotaborda

Se vc sabe qual classe vc quer como retorno vc só precisa comparar isso com method.getReturnType() assim:

if ( String.class.isAssignableFrom( method.getReturnType()){
    // este é o metodo q vc quer
}

coloque isso num for que itera sobre todos os metodos da classe

G

obrigado por responder…

mas, infelizmente nao sei qual classe vc quer como retorno.

mas… depois de tanto queimar massa cinzenta, consegui fazer, e ficou maravilha, show mesmo, 2 mil % (hehehehe)

nao estava acreditando q o java ia perder pra clipper de 20 anos atras…rsss

obrigado a todos !

gilberto

Criado 6 de setembro de 2009
Ultima resposta 1 de out. de 2009
Respostas 9
Participantes 4