Clojure 为什么字符串格式会导致强制转换异常?

Clojure 为什么字符串格式会导致强制转换异常?,clojure,Clojure,为什么(String/format“%8s”(Integer/toBinaryString 6))会导致java.lang.ClassCastException:java.lang.String无法强制转换为[Ljava.lang.Object强制转换异常?我不知道Clojure,但我怀疑它试图调用该方法,就好像它是java: String.format("%8s", Integer.toBinaryString(6)); 但是没有varargs的支持。我怀疑你想要: (String/form

为什么
(String/format“%8s”(Integer/toBinaryString 6))
会导致
java.lang.ClassCastException:java.lang.String无法强制转换为[Ljava.lang.Object
强制转换异常?

我不知道Clojure,但我怀疑它试图调用该方法,就好像它是java:

String.format("%8s", Integer.toBinaryString(6));
但是没有varargs的支持。我怀疑你想要:

(String/format "%8s" (into-array Object (Integer/toBinaryString 6)))

有关了解Clojure的人提供的更多信息,请参阅:)

是的,这正是问题所在。与在数组中使用
String/format
相比,更好的解决方案是只使用Clojure函数
format
,它采用varargs-Clojure样式,否则与
String/format
@amal的行为相同loy:的确,正如邮件列表线程中所指出的那样。我不想太偏离我认为我可以用正确的代码逃脱的轨道:)