У меня есть объект java.util.HashMap m (возвращаемое значение из вызова кода Java), и я хотел бы получить новую карту с дополнительной парой ключ-значение.
Если m была картой Clojure, я мог бы использовать:
(assoc m "key" "value")
Но попытка на a HashMap дает:
java.lang.ClassCastException: java.util.HashMap нельзя отнести к clojure.lang.Associative
Не повезло с seq:
(assoc (seq m) "key" "value")
java.lang.ClassCastException: clojure.lang.IteratorSeq нельзя отнести к clojure.lang.Associative
Единственное, что мне удалось сделать, это использовать HashMap собственный put, но возвращает void, поэтому я должен явно возвращать m:
(do (. m put "key" "value") m)
Это не идиоматический код Clojure, а я изменяю m вместо создания новой карты.
Как работать с HashMap более чем через Clojure -ий способ?