使用 Jackson 和 Guava 反序列化不可变 EnumMap

问题描述

我正在尝试使用 Google Guava Collections 使我的课程之一不可变。它有一个 EnumMap 字段,在 Guava 世界中,应将其转换为 ImmutableMap 类型并应使用 Maps.immutableEnumMap() 进行实例化。

现在我面临的问题是我使用 Jackson 将我的数据反序列化为这些不可变对象,但与在 Guava 中公开不可变变体的其他集合类型不同(例如:ImmutableList),{{ 1}} 是 Guava 中的包私有类,因此即使使用 ImmutableEnumMap 中的 GuavaModule 来实现 jackson-guava 互操作性也无助于我解决问题。

虽然该字段的理想类型是 jackson-datatype-guava,但我可以只使用 ImmutableEnumMap(因为它对客户端读取它的方式没有太大影响) ,但只是这样做,会使 Jackson 使用 ImmutableMap 反序列化它。

我希望 Guava 模块足够聪明,可以确定如果地图的键类型是枚举,那么它会自动使用 RegularImmutableMap 代替,但这似乎没有发生.

我想这样做的原因是为了保持 EnumMap 在常规地图上提供的性能

关于如何实现这一目标的任何想法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)