Question

Je ne suis pas vraiment sûr de pouvoir expliquer cela, mais voici:

Je veux pouvoir "insérer" certaines commandes dans des parties de mon code qui seront chargées à partir de fichiers externes. Pour analyser et exécuter ces commandes, je dois probablement utiliser des scripts tels que la méthode eval de BeanShell. Le problème est qu'il ne semble pas reconnaître l'instance / la méthode dans laquelle il se trouve. Comme exemple très basique, je veux faire quelque chose comme

    public void somethingHappens()
    {
        Foo foo = new Foo();
        Interpreter i = new Interpreter();
        i.eval("print(foo.getName());");
    }

Est-ce possible? Devrais-je utiliser d'autres outils de script?

Était-ce utile?

La solution

Si vous utilisez la version 1.6, vous pouvez utiliser le support JavaScript intégré.

Le Guide du programmeur de scripts Java explique comment importer des classes Java dans votre script.

L'exemple de code 9 de cet article explique comment passer objets dans la portée du script.

Autres conseils

En utilisant beanshell, vous pouvez essayer ceci

package beanshell;

import bsh.EvalError;
import bsh.Interpreter;

public class DemoExample {

    public static void main( String [] args ) throws EvalError  {
        Interpreter i = new bsh.Interpreter();
        String usrIp = "if(\"abc\".equals(\"abc\")){"
                + "demoExmp.printValue(\"Rohit\");"
                + "}";

        i.eval(""
                + "import beanshell.DemoExample;"
                + "DemoExample demoExmp = new beanshell.DemoExample();"
                + ""+usrIp);
    }

    public static void printValue(String strVal){
        System.out.println("Printing Value "+strVal);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top