加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Java对象作为Clojure映射

发布时间:2020-12-14 05:11:01 所属栏目:Java 来源:网络整理
导读:我有一个 Java类,我想在Clojure中使用.但是,我想用它作为Clojure地图.这样做需要什么步骤? 我看过IPersistentMap的代码 – Java类是否实现了这一点?还是应该有一些Clojure代码实现一个协议? 我知道我可以写一些映射代码,以将代码从Java对象显式转换为地图
我有一个 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}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读