简体   繁体   English

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM