避免为每条记录重新初始化 groovy shell

Avoiding reinitialsation of groovy shell for each record

我正在尝试实现以下代码:-

        for(int i = 0; i < records.length; i++){
            Binding binding=new Binding();
            binding.setVariable("val1",records[i][0]);
            binding.setVariable("val2",records[i][1]);
            binding.setVariable("val3",records[i][2]);
            GroovyShell shell=new GroovyShell(binding);
            Object value = shell.evaluate(code);
            System.out.println(value.toString());
        };

我不想为每条记录一次又一次地创建 GroovyShell,但我看不到其他选项。据我所知,我无法为同一个 groovy shell 提供新的绑定,因为绑定只能在创建 shell 时提供,之后不能提供。

我尝试在创建 groovy shell 后更改绑定对象,但它给我一个错误。

除了为每条记录一次又一次地重新初始化 groovy shell 之外,我还有其他选择吗?我只想将变量 record[i][0]、record[i][1]、record[i][2] 传递给 shell.

使用GroovyShell.parse(code)

Script script = new GroovyShell().parse(code);

for(int i = 0; i < records.length; i++){
    Binding binding=new Binding();
    binding.setVariable("val1",records[i][0]);
    binding.setVariable("val2",records[i][1]);
    binding.setVariable("val3",records[i][2]);
    script.setBinding(binding);
    Object value = script.run();
    System.out.println(value.toString());
};