如何根据数组类型调度多方法(multimethod)

8

我正在处理一个多方法问题,需要按照一系列的顺序更新哈希表。看起来很简单,但当我尝试输入“X数组的类型”时遇到了困难。

(defmulti update-hash #(class %2))

(type (byte 1))
=> java.lang.Byte
(defmethod update-hash java.lang.Byte [md byte]
  (. md update byte))

(type (into-array  [ (byte 1)]))
=> [Ljava.lang.Byte;
(defmethod update-hash < WHAT GOES HERE > [md byte]
1个回答

9

以下两种方法都可以:

(defmethod update-hash (Class/forName "[Ljava.lang.Byte;") [md byte] ...)

(defmethod update-hash (class (make-array Byte 0)) [md byte] ... )

"[Ljava.lang.Byte;"这个名称从哪里来? - Arthur Ulfeldt
1
这是JVM内部用于引用数组的一些名称。有时你也会在普通的Java代码中看到它。 - Brian Carper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接