2013-01-14 19 views
5

と、次の呼び出し失敗しClojureの::(文字列/フォーマット "%s" は "A"):ClassCastExceptionがjava.lang.Stringでにキャストすることはできません:: ClassCastExceptionが

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

を...スロー」 Clojureの[Ljava.lang.Object "例外です。

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

....は同じ例外を生成します。

+1

あなたは 'String.format'なく[Clojure.core /フォーマット](https://github.com/clojureを使用する必要が任意の理由を使用します/clojure/blob/master/src/clj/clojure/core.clj#L5162) 'to-array'でラップしますか? '(形式"%s "" a ")' – Kyle

+0

特にString.formatを使用する理由はありません。ちょうど興味があります... –

答えて

14

ので、最後の引数は、配列Object[]代わりのObjectです。

だけ(String/format "%s" (into-array ["a"]))

呼び出すしかし、より多くの慣用(format "Hello %s" "world")

+0

+1 to 'format' from clojure.core – Alex

3

[Lは「配列がほしい」という意味です。(String/format "%s" (to-array "a"))を使用してください。一般的な構文:(to-array ["a" 42 0.666]).

4

String.formatは内部でプレーンなJava配列であるvarargsを使用しています。次に、入力パラメータを配列に変換する必要があります。 to-arrayを使用して:Java APIの

user=> (String/format "%s" (to-array "a")) 
"a" 
関連する問題