带有clojure.lang.PersistentHashMap的ObjectInputStream

shm*_*111 4 java serialization clojure

我有一个奇怪的问题.

  1. 如果我采用String类型的clojure映射,Long
  2. java.io.ObjectInputStream使用Clojure 1.6.0 序列化它
  3. java.io.ObjectInputStream使用Clojure 1.5.1 对其进行反序列化

我可以在repl中打印新地图,使用所有值,使用vals所有键,keys但是我无法使用get.

(get new-map "stringkey") => nil

但是,into {}修复了一些问题.

我很感激在使用Java序列化时切换版本可能不是一个好主意,我确实可以解决问题但是我现在对它为什么会发生感兴趣?

noi*_*ith 6

Clojure的哈希码用1.6改变了,并且get依赖于被查找的键的哈希值.