[英]How do I look up a Clojure keyword in IPersistentMap from Java?
Calling a Clojure library from a Java program. 从Java程序调用Clojure库。 I get an IPersistentMap back. 我得到了一个IPersistentMap。
The keys are Clojure keywords like :name etc. 键是Clojure关键字,如:名称等。
But it seems I can't just do a 但似乎我不能只做一个
map.valAt(":name");
to pull it out in Java. 用Java来解决它。 I'm guessing that's because the keys aren't normal java Strings. 我猜这是因为键不是普通的java字符串。 So what are they? 那他们是什么? And how can I pull data out of an IPersistentMap? 如何从IPersistentMap中提取数据?
You don't need to use the reader. 您不需要使用阅读器。 Clojure keywords are of type clojure.lang.Keyword
. Clojure关键字的类型为clojure.lang.Keyword
。 You can create one using the static method intern
: 您可以使用静态方法intern
创建一个:
map.valAt(clojure.lang.Keyword.intern("name")); // Note: no leading colon
Have you tried using Clojure.read
? 你尝试过使用Clojure.read
吗? => =>
map.valAt(Clojure.read(":name"))
or maybe => // (:name my-map) myMap.invoke(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 1.6 Java API https://github.com/clojure/clojure/blob/master/changes.md#21-java-api
Clojure's JavaDoc https://clojure.github.io/clojure/javadoc/ Clojure的JavaDoc https://clojure.github.io/clojure/javadoc/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.