【发布时间】:2009-10-23 21:19:16
【问题描述】:
Lamdbaj 允许在 Java 语言中定义闭包,可以找到各种示例 here
我的问题是关于使用的底层 Java 机制,例如,要定义 println 闭包,使用以下代码:
Closure println = closure();
{ of(System.out).println(var(String.class)); }
这个闭包随后可以通过以下方式执行:
println.apply("foobar");
我很好奇 Java 中的哪些机制允许对 of(...).println(...) 的调用与 println 实例本身相关联。
当然,可以阅读 lambdaj 源代码,但如果有人有的话,我希望能得到更高层次的解释。我的反思技巧甚至是一点点内省和动态执行方法。
【问题讨论】:
-
我错过了“关闭”位吗?我看到一个方法被提升了,但就是这样。 :-/
-
其实 Lambdaj 不支持闭包。具体来说,它无法从封闭范围中捕获变量。
标签: java reflection closures lambdaj