Why does (String/format "%8s" (Integer/toBinaryString 6)) result in a java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object casting exception?
1 Answer
I don't know Clojure, but I suspect that's trying to call the method as if it were the Java:
String.format("%8s", Integer.toBinaryString(6));
but without the varargs support. I suspect you want:
(String/format "%8s" (into-array Object (Integer/toBinaryString 6)))
See this mailing list thread for more information from people who actually do know Clojure :)
2 Comments
amalloy
Yes, this is exactly the issue. A better solution than using
String/format and into-array is to just use the Clojure function format, which takes varargs Clojure-style and otherwise behaves the same as String/format.Jon Skeet
@amalloy: Indeed, as noted on the mailing list thread. I didn't want to get too far off the track of what I thought I'd be able to get away with in terms of correct code :)