当前字面量中的类型提示在运行时丢失
`
user=> (set! warn-on-reflection true)
true
user=> (fn [x] (java.util.HashMap. ^java.util.Map {"foo" x}))
反射警告,null:1:9 - 调用 java.util.HashMap 构造函数无法解析。
function[user/eval7479/fn--7480]
`
当前有效的解决方案是引入一个局部变量并对绑定进行类型提示
`
user=> (fn [x] (let [^java.util.Map m {"foo" x}] (java.util.HashMap. m)))
function[user/eval7487/fn--7488]
`
附带的补丁通过跟踪字面量值的类型提示来修复此问题,即使在原始情况下也能使反射消失
`
user=> (set! warn-on-reflection true)
true
user=> (fn [x] (java.util.HashMap. ^java.util.Map {"foo" x}))
function[user/eval7479/fn--7480]
`
方法: 保护字面量集合中的用户提示
补丁: 0001-CLJ-1929-preserve-type-hints-in-literals.patch