从Java程序调用Clojure库。我得到了一个IPersistentMap。
键是Clojure关键字,例如:name等。
但似乎我不能做一个
map.valAt(":name");
用Java把它拉出来。我猜这是因为键不是普通的java字符串。那他们是什么?我如何从IPersistentMap中提取数据?
答案 0 :(得分:7)
您无需使用阅读器。 Clojure关键字的类型为clojure.lang.Keyword
。您可以使用静态方法intern
创建一个:
map.valAt(clojure.lang.Keyword.intern("name")); // Note: no leading colon
答案 1 :(得分:4)
您是否尝试过使用Clojure.read
? =>
map.valAt(Clojure.read(":name"))
或者=>>
// (:name my-map)
myMap.invoke(Clojure.read(":name"));
Clojure 1.6 Java API https://github.com/clojure/clojure/blob/master/changes.md#21-java-api
Clojure的JavaDoc https://clojure.github.io/clojure/javadoc/