1 回答

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個贊
該類groovy.util.Eval可能是在運(yùn)行時動態(tài)執(zhí)行 Groovy 的最簡單方法。下面給出一個示例:
import groovy.util.Eval;
public class Goovy123 {
public static void main(String[] args) {
System.out.println(Eval.me("33*3"));//99
System.out.println(Eval.me("'foo'.toUpperCase()"));//FOO
}
}
我在項(xiàng)目中使用了以下 Maven 依賴項(xiàng)來獲取所需的庫:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.5.8</version>
<type>pom</type>
</dependency>
更新:
我發(fā)布此更新是為了添加我原來的答案中缺少的州的示例。使用該類groovy.lang.Binding,您可以將狀態(tài)保存在變量中并稍后在程序中使用它。下面給出一個示例:
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
import groovy.util.Eval;
public class Goovy123 {
public static void main(String[] args) throws InterruptedException {
Binding binding = new Binding();
String foo="foo";
binding.setVariable("foo", foo);
GroovyShell shell = new GroovyShell(binding);
System.out.println("Original state: "+binding.getVariable("foo"));
shell.evaluate("foo=foo.toUpperCase();");
System.out.println("Changed state: "+binding.getVariable("foo"));
}
}
添加回答
舉報