在Clojure中使用类型提示返回值

前端之家收集整理的这篇文章主要介绍了在Clojure中使用类型提示返回值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一些 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.

我很惊讶,因为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)))]
 ...

并用于在REPL shell(AFAICT)中显示代码.

原文链接:https://www.f2er.com/java/124145.html

猜你在找的Java相关文章