Clojure :: (String/format "%s" "a") :: 失败并出现 ClassCastException
Posted
技术标签:
【中文标题】Clojure :: (String/format "%s" "a") :: 失败并出现 ClassCastException【英文标题】:Clojure :: (String/format "%s" "a") :: fails with ClassCastException 【发布时间】:2013-01-14 16:48:39 【问题描述】:以下调用:
(String/format "%s" "a")
...在 Clojure 中引发“ClassCastException java.lang.String 无法转换为 [Ljava.lang.Object”异常。
(String/format "%s" (cast Object "a"))
....产生同样的异常。
【问题讨论】:
您有什么理由需要使用String.format
而不是Clojure.core/format - 它为您包装了to-array
? (format "%s" "a")
没有理由特别使用 String.format,只是好奇......
【参考方案1】:
因为 java API 中的最后一个参数是数组 Object[]
而不是 Object
。
只需拨打(String/format "%s" (into-array ["a"]))
但更习惯使用(format "Hello %s" "world")
【讨论】:
【参考方案2】:[L 表示“我想要数组”,所以使用(String/format "%s" (to-array "a"))
。一般语法:(to-array ["a" 42 0.666]).
【讨论】:
【参考方案3】:String.format
使用可变参数,它们是内部纯 Java 数组。然后,您需要将输入参数转换为数组,例如通过使用to-array
:
user=> (String/format "%s" (to-array "a"))
"a"
【讨论】:
以上是关于Clojure :: (String/format "%s" "a") :: 失败并出现 ClassCastException的主要内容,如果未能解决你的问题,请参考以下文章