2015-05-05 29 views
4

我有一个奇怪的问题。它使用java.io.ObjectInputStream使用Clojure的1.6.0ObjectInputStream与clojure.lang.PersistentHashMap

  1. 如果我把String类型的Clojure的地图,龙
  2. 连载
  3. 反序列化使用Clojure的1.5.1

我可以打印使用java.io.ObjectInputStream在repl中的新地图,使用vals获取所有值,使用keys获取所有密钥,但是我无法使用get获取值。

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

然而,into {}修复的东西。

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

回答

6

Clojure的哈希代码被更改为1.6,并且get依赖于正在查找的密钥的哈希值。