Equivalente ao EVAL do JavaScript no Java (BeanShell)

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 :cry:

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.