在这里重新整理之前的对话记录——看起来使用关键词作为名字局部部分将会导致clj-uuid使用Java序列化将对象序列化为字节。
Clojure 1.11在关键词(为了改善arity异常报告)上做了一些向后兼容的增量更改,因此1.10和1.11之间的关键词的二进制序列化发生了变化。
我们并不保证Clojure对象在发布版本之间的二进制可序列化性,因此这里的预期这些将会是相同的这种说法是不正确的。在clj-uuid中可以通过多种方式解决这个问题,例如:通过为Keyword特别提供自定义序列化(在UUIDNameBytes协议中)的特定实现(
我们也许可以“修复”这个特定情况,通过将clojure.lang.Keyword的serialversionUID设置为它在1.10中的值(因为这些对象可能是二进制兼容的),我们将会进一步考虑这个问题。但即使我们这么做,我也建议使用更稳定的字符串来作为clj-uuid局部名称部分。