clojure.lang.PersistentHashMap 的 ObjectInputStream
ObjectInputStream with clojure.lang.PersistentHashMap
我有一个奇怪的问题。
- 如果我使用 String、Long 类型的 clojure 映射
- 使用
java.io.ObjectInputStream
使用 Clojure 1.6.0 对其进行序列化
- 使用
java.io.ObjectInputStream
使用 Clojure 1.5.1 对其进行反序列化
我可以在 repl 中打印新地图,使用 vals
获取所有值,使用 keys
获取所有键,但是我无法使用 get
.[=18 获取值=]
(get new-map "stringkey") => nil
但是,into {}
解决了问题。
我很欣赏在使用 Java 序列化时切换版本可能不是一个好主意,我确实可以解决这个问题,但我现在想知道为什么会发生这种情况?
Clojure 的散列代码在 1.6 中发生了变化,get
依赖于正在查找的键的散列。
我有一个奇怪的问题。
- 如果我使用 String、Long 类型的 clojure 映射
- 使用
java.io.ObjectInputStream
使用 Clojure 1.6.0 对其进行序列化
- 使用
java.io.ObjectInputStream
使用 Clojure 1.5.1 对其进行反序列化
我可以在 repl 中打印新地图,使用 vals
获取所有值,使用 keys
获取所有键,但是我无法使用 get
.[=18 获取值=]
(get new-map "stringkey") => nil
但是,into {}
解决了问题。
我很欣赏在使用 Java 序列化时切换版本可能不是一个好主意,我确实可以解决这个问题,但我现在想知道为什么会发生这种情况?
Clojure 的散列代码在 1.6 中发生了变化,get
依赖于正在查找的键的散列。