我发现了Java 8的一种新语法,该语法通过source读取了我正在尝试纠缠的框架:
Runtime.getRuntime().addShutdownHook(new Thread(Sirius::stop));
在Clojure中,我可以将其翻译为:
(.addShutdownHook (Runtime/getRuntime) (Thread. ????))
但是我不确定应该为
???
输入什么 最佳答案
IFn扩展了Runnable,因此您可以执行
#(Sirius/stop)
值得一提的是
Sirius/stop
新线程(Sirius::stop)
只是语法糖
new Thread(new Runnable {
public void run() {
Sirius.stop();
}
})
如果有问题的接口(interface)不是Runnable/Callable,则必须使用reify宏。
关于java - 如何将双冒号运算符转换为clojure?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29179512/