如何从Java中查找IPersistentMap中的Clojure关键字?

时间:2014-11-27 07:13:47

标签: java clojure

从Java程序调用Clojure库。我得到了一个IPersistentMap。

键是Clojure关键字,例如:name等。

但似乎我不能做一个

map.valAt(":name");

用Java把它拉出来。我猜这是因为键不是普通的java字符串。那他们是什么?我如何从IPersistentMap中提取数据?

2 个答案:

答案 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/