我工作的一些Java/Clojure的互操作性和跨反射以下代碼警告是:Clojure中使用類型提示對Java返回值
(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中使用適當的靜態方法。
該代碼工作得很好順便說一句,所以它顯然在運行時找到正確的方法。
所以兩個問題:
- 這是爲什麼返回一個反射警告?
- 需要什麼類型的提示來解決這個問題?
這段代碼沒有反射警告。你能提供更多關於你的設置的細節嗎? (Clojure版本 - 儘管我嘗試了1.1版本和最新版本 - 至少是JVM版本。) – 2010-06-01 23:08:05
我使用的是Clojure 1.2和Java 1.6 JDK的5月中旬版本。也許我應該嘗試最新的1.2版本? – mikera 2010-06-01 23:19:42
Sun JDK或OpenJDK?至於構建,當然,給它一個鏡頭,雖然它適用於我自己的本地構建和1.1版本。 – 2010-06-02 00:10:36