我想在 Java 应用程序中使用 Groovy Closure 类,但遇到的问题比预期的要多。这是我拥有的:
int count = 0;
groovy.lang.Closure closure = { count = 1 };
但是,当我尝试使用 JDK 7 编译它时,出现错误:illegal initializer for Closure
我是否漏掉了一些非常明显的东西?感谢您的帮助。
最佳答案
正如 Oliver 所说,Java 不支持这种语法。 (免责声明:所有代码未经测试)你可以做的是:
Closure closure = new Closure(null) {
public Object doCall() {
/* some code here */
}
};
但这不会让你在这个方法中设置计数,因为这是一个 Java 匿名内部类,因此计数必须是最终的。您可以使用任何类型的重定向绕过它,例如数组。或者您模仿 Groovy 的作用并使用它:
import groovy.lang.*;
Reference count = new Reference(0);
Closure closure = new Closure(this) {
public Object doCall() {
count.set(1);
}
};
关于java - 在 Java 应用程序中使用 groovy.lang.Closure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32294685/