我想扩展一个Clojure协议来处理Java原始数组。将Clojure协议扩展到原始数组
(defprotocol PVectorisable
(to-vector [a]))
(extend-protocol PVectorisable
??????
(to-vector [coll]
(Vectorz/create ^doubles coll))
java.util.List
... other implementations......)
这是可能的,如果是这样的话,需要在上面的扩展协议定义中去(代替“??????”)吗?
谢谢!它有点丑,但Class/forName解决方案似乎工作得很好。 – mikera
我发现这只适用于扩展协议定义中的第一个类。如果不是,Clojure 1.5.1会给出一个java.lang.UnsupportedOperationException异常,并且抱怨第n个字符或符号类型不支持。 – hadronzoo