使用Java对象作为Clojure映射

前端之家收集整理的这篇文章主要介绍了使用Java对象作为Clojure映射前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 Java类,我想在Clojure中使用.但是,我想用它作为Clojure地图.这样做需要什么步骤?

我看过IPersistentMap的代码 – Java类是否实现了这一点?还是应该有一些Clojure代码实现一个协议?

我知道我可以写一些映射代码,以将代码从Java对象显式转换为地图,但该解决方案具有很高的努力/回报率.此外,我可能会再次遇到同样的情况.

具体示例:我有一个用Java编写的解析器.我想使用它来解析一些文本,然后访问解析的数据结构的内容,就好像它在Clojure地图中一样:

(def parser (new MyParser))

(let [parse-tree (parser ... parse some text ...)]
  ((parse-tree :items) "itemid"))

解决方法

功能 bean想到了:

Takes a Java object and returns a read-only implementation of the map abstraction based upon its JavaBean properties.

从网站获取的示例:

user=> (import java.util.Date)
java.util.Date

user=> (def *now* (Date.))
#'user/*now*

user=> (bean *now*)
{:seconds 57,:date 13,:class java.util.Date,:minutes 55,:hours 17,:year 110,:timezoneOffset -330,:month 6,:day 2,:time 1279023957492}

猜你在找的Java相关文章