为什么GSON使用字段而不是getters/setters?

2022-08-31 12:22:24

为什么GSON使用字段(私有,公共,受保护)?有没有办法告诉GSON只使用getter和setters?


答案 1

一般来说,当您序列化/反序列化对象时,这样做最终会获得对象状态的精确副本;因此,您通常希望规避OO设计中通常需要的封装。如果不规避封装,则可能无法最终得到一个在反序列化后具有与序列化之前完全相同状态的对象。此外,请考虑不希望为特定属性提供 setter 的情况。如果您正在通过 getter 和 setter 工作,序列化/反序列化应如何操作?


答案 2

有没有办法告诉GSON只使用getter和setters?

还没有。

来自设计文档

[T]这里也有支持属性的好论据。我们打算在后期版本中增强 Gson,以支持属性作为指示 Json 字段的替代映射。目前,Gson是基于场的。


推荐