如果我需要使用排序器,我似乎无法序列化TreeMap。网上没有关于它的信息,我似乎不能自己修理它。关于如何获得可序列化排序器的任何帮助将不胜感激。谢谢。
这就是你需要做的。
-
使用序列化排序器实例答案中给出的包装器技术实现可序列化排序器类。(这所做的是将实际的排序器保存在
transient
字段中,并在包装器反序列化时通过调用Collator.getInstance
来重建。) -
创建一个该类的实例。
-
实例化
TreeMap
类,传递collator实例作为构造函数参数。
您现在应该能够序列化TreeMap
。
请注意,TreeMap
比较器保存在private
字段中,而不是标记为transient
,并且它正在被映射的private
writeObject
和readObject
方法序列化/反序列化。在TreeMap
中没有干净的方法来覆盖此行为。
唯一的其他选择是寻找(或创建)一个树映射的实现,其中比较器被标记为transient,或者Collator
的实现是可序列化的。
参考上面的链接,你说:
我试过了,没有效果。
应该可以。也许你能告诉我们它为什么不起作用。有例外吗?不正确的行为?