以下电话:
(String/format "%s" "a")
...抛出一个“ClassCastException java.lang.String不能在Clojure中强制转换为[Ljava.lang.Object”异常。
(String/format "%s" (cast Object "a"))
....产生同样的例外。
答案 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"