mik*_*era 11 java clojure type-hinting
我正在研究一些Java/Clojure互操作性,并遇到以下代码的反射警告:
(defn load-image [resource-name]
(javax.imageio.ImageIO/read
(.getResource
(class javax.imageio.ImageIO)
resource-name)))
=> Reflection warning, clojure/repl.clj:37 - reference to field read can't be resolved.
Run Code Online (Sandbox Code Playgroud)
我对此感到惊讶,因为getResource总是返回一个URL,因此我希望编译器在javax.imageio.ImageIO/read中使用适当的静态方法.
代码工作得很好BTW,所以很明显在运行时找到正确的方法.
所以有两个问题:
AFAICS 与您的代码或编译无关。它是 REPL 的 source-fn 函数的一部分:
...
(let [text (StringBuilder.)
pbr (proxy [PushbackReader] [rdr]
(read [] (let [i (proxy-super read)]
(.append text (char i))
i)))]
...
Run Code Online (Sandbox Code Playgroud)
并用于在 REPL shell、AFAICT 中显示源代码。