这里只是将其他地方的对话重新整理,以供记录 - 使用名称局部部分的键作为关键词似乎会导致clj-uuid使用Java序列化将对象序列化为字节。
Clojure 1.11在Keyword(为了改进arity异常报告)上做了一些向后兼容的修改,因此关键词的二进制序列化在1.10和1.11之间发生了变化。
我们不保证在发布之间Clojure对象的二进制可序列化性,因此预期这些会是相同的这一想法是不正确的。可以通过以下几种方法在clj-uuid中处理此属性:通过对Keyword在UUIDNameBytes协议中提供特定定制序列化(https://github.com/danlentz/clj-uuid/blob/master/src/clj_uuid.clj#L557),或者依靠pr将其转换为字符串然后转换为字节,而不是直接进行二进制序列化到对象流等。
我们可能会更改这个特定的clojure.lang.Keyword的serialversionUID的值(它以前在1.10中)来“修复”这种情况(因为这些对象可能是二进制兼容的),我们会进一步考虑这个问题。但即使我们这样做,我也建议使用更稳定的字符串等对于clj-uuid的局部名称部分。