从JDK19+开始,以下代码不需要添加类型提示即可进行反射
(def x 10)
(Thread/sleep x)
棘手的是,在较早期的JDK中上述代码不会触发反射,但当您升级JDK后,反射开始启动。
如果您使用native-image,由于缺少反射配置,程序可能开始失败。
有一个内置的sleep函数能够接受数字,这样我们就不会忘记添加类型提示,并且它可以在所有的JDK上都能一致地工作就好了。
例如:
(ns clojure.java.misc)
(defn sleep [x]
(if (number? x)
(Thread/sleep (long x))
....)
clojure.java.misc
的更好名字是welcome。也许简单地命名为clojure.java
或者将这个函数放入clojure.core
?