java - 在 Java 应用程序中使用 groovy.lang.Closure

标签 java groovy closures

我想在 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/

相关文章:

java - 如何使用 libgdx/robovm 获取应用程序版本

java - Web 应用程序中的 Quartz 调度程序

grails - Google Calendar API 事件地点

java - protoc-gen-java代码使用Inline对象提示语法错误

java - 如何从 hashmap 获取对象的副本而不修改其在 Hashmap 中的值

grails - IntelliJ,Grails - 我删除了一个文件,但没有任何效果

groovy - 在 Groovy 中强制指定参数

javascript - 循环内的 JS 函数 - 内存/CPU 注意事项

javascript - jQuery 动画回调中的变量导致父循环中的范围困惑

java - 绕过 Java 闭包最终限制的模式