#clojure
#clojure
Вопрос:
Почему это (String/format "%8s" (Integer/toBinaryString 6))
приводит к java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.Object
исключению приведения?
Ответ №1:
Я не знаю Clojure, но я подозреваю, что он пытается вызвать метод, как если бы это была Java:
String.format("%8s", Integer.toBinaryString(6));
но без поддержки varargs. Я подозреваю, что вы хотите:
(String/format "%8s" (into-array Object (Integer/toBinaryString 6)))
Смотрите эту ветку списка рассылки для получения дополнительной информации от людей, которые действительно знают Clojure 🙂
Комментарии:
1. Да, это именно проблема. Лучшим решением, чем использование
String/format
иinto-array
, является просто использование функции Clojureformat
, которая принимает переменные в стиле Clojure и в остальном ведет себя так же, какString/format
.2. @amalloy: Действительно, как отмечено в теме списка рассылки. Я не хотел слишком сильно отклоняться от того, что, как я думал, мне сойдет с рук с точки зрения правильного кода 🙂