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

Clojure :: (String/format “%s” “a”) :: fails with ClassCastException

以下调用:

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

...抛出Clojure中的" ClassCastException java.lang.String无法转换为[Ljava.lang.Object"异常。

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

....产生相同的异常。


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

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

但更习惯使用(format"Hello %s""world")


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

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

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