Clojure ::(String / format“%s”“a”)::失败并出现ClassCastException

时间:2013-01-14 16:48:40

标签: clojure

以下电话:

(String/format "%s" "a")

...抛出一个“ClassCastException java.lang.String不能在Clojure中强制转换为[Ljava.lang.Object”异常。

(String/format "%s" (cast Object "a"))

....产生同样的例外。

3 个答案:

答案 0 :(得分:14)

因为java API中的最后一个参数是数组Object[]而不是Object

只需致电(String/format "%s" (into-array ["a"]))

但使用(format "Hello %s" "world")

更加惯用

答案 1 :(得分:4)

[L表示“我想要数组”,因此请使用(String/format "%s" (to-array "a"))。一般语法:(to-array ["a" 42 0.666]).

答案 2 :(得分:4)

String.format正在使用varargs,它是内部普通的Java数组。然后,您需要将输入参数转换为数组,例如使用to-array

user=> (String/format "%s" (to-array "a"))
"a"