(clojure.java.data/from-java-deep Class {})
抛出 StackOverflowError
。
文档中没有提到这一点,但我想看到这种情况被java.data所覆盖。
您可以在 https://github.com/henrik42/java.data-with-Class/tree/master 中找到一个简短的示例。
这显示了错误。
clj -X main/this-call-throws
Execution error (StackOverflowError) at clojure.java.data/add-deep-getter-fn (data.clj:121).
作为解决方案,我正在使用 (defmethod j/from-java-deep Class [clazz _] {:class clazz})
-- 但这不是真正的解决方案,因为它甚至不能提供 (from-java-shallow Class {})
會提供的内容。
clj -X main/this-call-works
(j/from-java-deep Class) ;=> {:class java.lang.Class}
用
(defmethod j/from-java-deep Class [clazz _] (j/from-java-shallow Class {}))
替代并没有好多少,因为它也不是一个深拷贝。