我发现了Java 8的一种新语法,该语法通读了我试图弄乱的框架的源代码:
Runtime.getRuntime().addShutdownHook(new Thread(Sirius::stop));
Run Code Online (Sandbox Code Playgroud)
在Clojure中,我可以将其翻译为:
(.addShutdownHook (Runtime/getRuntime) (Thread. ????))
Run Code Online (Sandbox Code Playgroud)
但我不确定该为 ???
IFn 扩展了 Runnable,所以你可以这样做
#(Sirius/stop)
Run Code Online (Sandbox Code Playgroud)
值得一提的是
Sirius/stopJava 8 函数式接口的底层工作方式是仅使用一种方法来匿名实现接口。所以
新线程(小天狼星::停止)
只是语法糖
new Thread(new Runnable {
public void run() {
Sirius.stop();
}
})
Run Code Online (Sandbox Code Playgroud)
如果相关接口不是可运行/可调用的,则必须使用 reify 宏。
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |