从 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
中?