从JDK19+开始,以下内容在添加类型提示后不再具有反射性
(def x 10)
(Thread/sleep x)
有点棘手的是,在早期的JDK中上述操作没有反射,但是当你升级你的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
中?