【发布时间】:2015-11-24 16:28:19
【问题描述】:
目前,我有一个从 Java 调用的功能齐全的 Clojure 库。
我这样做的方式:我有一个文件,它使用 gen-class 将整个 API 包装为单个类的静态方法,并以 IPersistentVector 和 IPersistentMap 的形式传入和传出数据。
不过,现在我正在重构库并将功能置于各种协议后面。
我有四个协议,我们称它们为 A、B、C 和 D。还有两个定义记录 X 和 Y。X 和 Y 都实现了协议 A、B 和 C。而 Y 也实现了 D。
我需要做什么才能使这些对 Java 可用?这些是否可以作为接口和类自动使用?还是我仍然需要做相当于 gen-class 的操作才能将它们公开?
如果不是,那么 gen-class :methods 子句的等价物是什么,我在其中为方法的参数定义 Java 类型?
有没有人有一个简单的例子让 Java 可以使用协议和记录?
【问题讨论】:
标签: clojure clojure-java-interop clojure-protocol