在Java中使用的Groovy中定义一个方法

时间:2017-11-05 10:15:15

标签: java methods groovy

我在 Java class中使用 Groovy Interpreter ,我正在尝试定义一个方法并调用它,这是我的代码:

        Binding binding = new Binding();
        binding.setVariable("aa", 1);
        binding.setVariable("bb", 2);

        GroovyShell shell = new GroovyShell(binding);
        shell.evaluate("int add(int a,int b){return (a+b)}");

        int   value =(int) shell.evaluate("add(aa,bb);");
        System.out.println(value);

我有这个错误:

  

线程“main”中的异常groovy.lang.MissingMethodException:不   方法签名:Script2.add()适用于参数类型:   (java.lang.Integer,java.lang.Integer)值:[1,2]可能   解决方案:any(),wait(),run(),run(),find(),wait(long,int)

请告诉我如何在groovy中定义一个函数以及为什么我的代码无效。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:3)

当您使用leliminate [1;2;3;2;4] [2;3;3;5];; 时,shell会将整个脚本编译为JVM类,加载并运行它,然后返回结果。此过程对于每个GroovyShell#evaluate调用都是独立的(请注意,该类的名称为evaluate;该方法在Script2中定义),因此您的方法在第二个调用中不可用调用

解决此问题的选项包括在评估之前进行简单的字符串连接(这将适用于您自己的脚本,但如果脚本中的某些内容调用Script1)或使用更复杂的GroovyScriptEngine,则可能会出现问题。 / p>