Queridos Mestres dos Java, espero que estejam todos bem.
Procurei aqui no forum do GUJ e encontrei o BeanShell que deixa eu interpretar uma linha de código a quente da seguinte maneira
import bsh.Interpreter;
...
Interpreter inter = new Interpreter();
inter.eval("System.out.println(999999);");
...
O Resultado será 999999
Até ai tudo bem.
Só o que eu quero é passar o nome de um método no “Eval” para que minha classe fique dinamica. Ou seja, eu quero escrever um método uma vez só e nas chamadas “p.metodo” por exemplo eu use um coringa tipo “p.nomeMetodo”
Tem algum jeito de eu fazer isso?
No BeanShell isso não funciona, ele não consegue acessar o Metodo 
Bom dia,
Moderador
Sera que você consegue mover para o forum de Java Avançado esse tópico?
Obrigado
Boa tarde pessoal
Apenas para documentar, consegui resolvar o “problema” com ajuda do meu lider técnico, o Sandro aqui da empresa.
usei esse trecho de código para resolver meu problema!!!
import java.lang.reflect.*;
public class method2 {
public int add(int a, int b)
{
return a + b;
}
public static void main(String args[])
{
try {
Class cls = Class.forName("method2");
Class partypes[] = new Class[2];
partypes[0] = Integer.TYPE;
partypes[1] = Integer.TYPE;
Method meth = cls.getMethod(
"add", partypes);
method2 methobj = new method2();
Object arglist[] = new Object[2];
arglist[0] = new Integer(37);
arglist[1] = new Integer(47);
Object retobj
= meth.invoke(methobj, arglist);
Integer retval = (Integer)retobj;
System.out.println(retval.intValue());
}
catch (Throwable e) {
System.err.println(e);
}
}
}
Obrigado pela atenção Galera.
Crie um decorator para isso, senão já viu a nháca que vai ser sempre que precisar invocar métodos pelo nome, né?
Decorator! :shock:
Engraçado que eu tenho duas certificações em Java (SCJP e SCWCD) mas não tenho prática. Estou tendo a chance de pegar Java forte agora!
Vou pesquisar sobre isso.
Valeu a dica.