2024 Clojure 状态调查!分享您的观点。

欢迎!请查看关于页面以了解更多关于这个过程的信息。

+3
data.xml
重新标记

编码或解码XML命名空间名称是否需要反射?这种反射在"definline"中,可能面临一些不必要的逆风。

这是在clojure.data.xml 0.2.0-alpha6中,我看到的Maven Central上的最新版本;以及OpenJDK 11。

程序

(set! *warn-on-reflection* true)
(require '[clojure.data.xml :as data.xml])

输出

Reflection warning, clojure/data/xml/jvm/name.clj:35:1 - call to static method decode on java.net.URLDecoder can't be resolved (argument types: unknown, java.lang.String).
Reflection warning, clojure/data/xml/jvm/name.clj:38:1 - call to static method encode on java.net.URLEncoder can't be resolved (argument types: unknown, java.lang.String).

我猜将"unknown"的第一个参数作为String类型提示应该是安全和高效的。所讨论的URLEncoder/URLDecoder方法是重载的,但所有签名都需要一个String类型的第一个参数。

2 个回答

0
0

实际上,您无法在这样的内联函数中进行类型提示(在内联时间点,您获得的可能是不能携带元数据的字面量字符串),所以唯一的简单修复方法就是停止使用内联函数(但不确定这真的有必要)。

...