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的主要内容,如果未能解决你的问题,请参考以下文章

string.format()的用法?

string.format()的用法?

string.format的参数

string.format(format,doubleValue) ,精度丢失

String.format 方法小数问题

string.format用法