当元数据评估时,原始别名不工作,例如在def的情况下。
在这个例子中,char被视为函数而不是类型别名。这是因为clojure.lang.Compiler$DefExpr$Parser.parse将元数据在符号上评估。
(def ^char x \space) (String/valueOf x) => CompilerException java.lang.IllegalArgumentException: Unable to resolve classname: clojure.core$char@7b82f7d1
而是,必须这样编写
(def ^Character/TYPE x \space)
但是,在行内使用原始类型提示时,它们可以正常工作
(def x \space) (String/valueOf ^char x)
原始类型别名应始终一致处理。
谷歌搜索显示,这似乎是一个已知的问题,但我还没有找到一个 Jira 问题。