java - 在 Clojure 中扩展自定义 Java 类、映射和序列的协议(protocol)

标签 java data-structures clojure protocols

我在 Clojure 1.2 中创建了一个协议(protocol),它处理我自己的 Java 类,并对通用 java.lang.Object 进行默认处理。代码看起来像这样:

(extend-protocol PMyProtocol
  my.java.ClassName
    (protocol-function [c]
      "My Java class result")

  java.lang.Object
    (protocol-function [c]
      "Default object result"))

我应该如何扩展它以对标准 Clojure 数据结构(特别是映射、 vector 和序列)进行特殊处理?

最佳答案

Clojure 的所有持久数据结构都实现了扩展 clojure.lang.PersistentCollection 的接口(interface)。 Clojure 的 transient 集合实现了 clojure.lang.TransientCollection。您可以将协议(protocol)扩展到这些,就像将其扩展到类一样(尽管仅处理持久性集合可能更有意义)。

关于java - 在 Clojure 中扩展自定义 Java 类、映射和序列的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388817/

相关文章:

应用的 Clojure Core.Typed 注释

Java 游标仅给出 50 行

java,BarSeries :How to Display the Column Chart horizontal?

arrays - 为数组中的每个元素找到最后一个较小或相等的数字?

algorithm - 这是我为硬币找零挑战找到的正确递归关系吗?

list - 关于在 Clojure 中创建列表的小问题

concurrency - 使用 Clojure 进行服务器编程

java - 从 Android 应用导出文件

java - 动态 json 响应 : Could not read JSON: N/A (through reference chain) jackson fasterxml

matlab - 四面体面的大型、大部分为空的数据结构