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

int*_*tar 3 java clojure

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

键是Clojure关键字,如:名称等.

但似乎我不能只做一个

map.valAt(":name");
Run Code Online (Sandbox Code Playgroud)

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

Nat*_*vis 7

您不需要使用阅读器.Clojure关键字属于类型clojure.lang.Keyword.您可以使用静态方法创建一个intern:

map.valAt(clojure.lang.Keyword.intern("name")); // Note: no leading colon


run*_*xec 5

你试过使用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/