Reflection warning despite type hint to Java constructor in Clojure
尽管有提示类型,以下代码也给了我一个反射警告。
1 2 3 4 | (set! *warn-on-reflection* true) (IllegalArgumentException. ^String (with-out-str (print"hi"))) |
警告:
1 2 3 | Reflection warning ... call to java.lang.IllegalArgumentException ctor can't be resolved. |
该代码已从一个更复杂的示例中提取并简化了,该示例在
这是CLJ-865。 它不是特定于
致癌基因对原因的洞察力促使我尝试了以下同样有效的方法。
1 2 3 | (let [m (with-out-str (print"hi"))] (IllegalArgumentException. ^String m )) |
我不确定原因,但我会注意到可以通过调用
1 | (IllegalArgumentException. (str (with-out-str (print"hi")))) |
似乎与
1 2 3 4 5 | (set! *warn-on-reflection* true) (IllegalArgumentException. ^String (try"" (finally""))) Reflection warning, C:\\Users\\slomi\\AppData\\Local\\Temp\\form-init3916067866461493959.clj:3:1 - call to java.lang.IllegalArgumentException ctor can't be resolved. |