Clojure中的definterface和defprotocol之间的区别

时间:2011-10-14 15:56:34

标签: clojure

除了缺少文档外,Clojure中definterfacedefprotocol之间有什么区别?

2 个答案:

答案 0 :(得分:12)

根据 Clojure的喜悦

  

使用definterface优于defprotocol的优势受到限制   完全是因为前者允许原始类型   参数和回报。在未来的某个时刻,同样的优势   可能会扩展到[通过协议]生成的接口,所以使用   除非绝对,否则definterface谨慎而且更喜欢协议   必要的。

答案 1 :(得分:4)

我可能不完全理解是definterface生成了一个接口.class,java代码可以实现这个接口.class,以便创建适合传递给Clojure函数的类。

总之,与多方法相比,协议是一种更快,更集中的调度方式。你实际上已经在其他clojure代码使用的协议中运行代码。