我只能找到关于反向的信息;使用Clojure来实现Java接口。然而,我想要用Clojure编写一个程序,并允许用户用Java进行扩展。例如:
# P.clj
(defprotocol P
(f [a])
(g [a b]))
# I.java
public class I implements P {
public Object f(Object a) { … }
public Object g(Object a, Object b) { … }
}
还有,我该如何指定参数类型,以便不必在任何地方都使用Object
?
我目前唯一看到的选择是使用点符号并依赖于鸭子类型,但我更喜欢在Java方面进行编译时验证接口实现。
I<T>
并在所有地方使用T
。 - Peter Lawreyextend-protocol
来允许Java接口的实例满足协议。 - Alex