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

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 !!!

da uma olhada nesse tutorial aqui mesmodo guj.

acredito ser o que vc quer.

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 !!!

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 !!!

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

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

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

[]'s

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 !!!

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

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