`(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 {}))
替代方案也好不到哪里去,因为它也不是深度复制。