Java 带有clojure.lang.PersistentHashMap的ObjectInputStream

Java 带有clojure.lang.PersistentHashMap的ObjectInputStream,java,serialization,clojure,Java,Serialization,Clojure,我有一个奇怪的问题 如果我使用字符串类型的clojure映射,Long 使用Clojure 1.6.0使用java.io.ObjectInputStream对其进行序列化 使用Clojure 1.5.1使用java.io.ObjectInputStream对其进行反序列化 我可以在repl中打印新映射,使用vals获取所有值,使用keys获取所有键,但是使用get无法获取值 (获取新映射“stringkey”)=>nil 然而,into{}修复了一些问题 我知道在使用Java序列化时切换版本可能

我有一个奇怪的问题

  • 如果我使用字符串类型的clojure映射,Long
  • 使用Clojure 1.6.0使用
    java.io.ObjectInputStream对其进行序列化
  • 使用Clojure 1.5.1使用
    java.io.ObjectInputStream对其进行反序列化
  • 我可以在repl中打印新映射,使用
    vals
    获取所有值,使用
    keys
    获取所有键,但是使用
    get
    无法获取值

    (获取新映射“stringkey”)=>nil

    然而,
    into{}
    修复了一些问题


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

    Clojure的哈希代码更改为1.6,而
    get
    依赖于正在查找的键的哈希