fra*_*ure 7 clojure clojure-java-interop
以下示例函数使用 Clojure 的 Java 互操作的特殊形式来调用类构造函数,会导致反射警告:
(defn test-reflection-err []
(new java.util.HashMap {}))
Run Code Online (Sandbox Code Playgroud)
该消息内容如下:
Reflection warning, /Users/ethan/Projects/scicloj/tablecloth.time/src/tablecloth/time/index.clj:26:3 - call to java.util.HashMap ctor can't be resolved.
Run Code Online (Sandbox Code Playgroud)
我试过放置类型提示来避免这种情况,但不确定将它们放置在哪里以防止反射错误。有谁知道如何做到这一点?
我试过了:
(defn test-reflection-err []
(^TreeMap new java.util.HashMap {}))
Run Code Online (Sandbox Code Playgroud)
和
(defn test-reflection-err []
(doto ^TreeMap (new java.util.HashMap {})))
Run Code Online (Sandbox Code Playgroud)
您需要向构造函数参数添加提示:
(let [^java.util.Map m {}]
(new java.util.HashMap m))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |