从JDK19+开始,以下在不添加类型提示的情况下变得可反射
(def x 10)
(Thread/sleep x)
棘手的是,在较早的JDKs中上述内容不进行反射,但当你升级你的JDK时,反射就会开始。
如果你使用native-image,你的程序可能会因为缺少反射配置而开始失败。
如果有一个内置的sleep函数,可以接受一个数字,我们就不会忘记添加类型提示,并且它将跨JDKs保持一致地工作。
例如:
(ns clojure.java.misc)
(defn sleep [x]
(if (number? x)
(Thread/sleep (long x))
....)
对clojure.java.misc
来说,更好的名字是welcome。也许只要clojure.java
,或者把此函数放到clojure.core
中?