没有实现Serializable接口却被序列化的字段

4
我有一个实现Serializable接口的Java类。它包含String、BigDecimal和其他可序列化的Java预定义类型。还包括一个未实现Serializable的自定义定义类。该自定义类型也被序列化为JSON。
但是警告显示要么将其设置为瞬态,要么使自定义类型实现serializable接口。
即使没有实现Serializable接口,该类型是如何被序列化的?我应该忽略这些警告吗(SonarLint消息)?

通过JSON。显然它要么有bug,要么不在乎。 - user207421
1个回答

5
这是因为Jackson在序列化/反序列化时不使用java.lang.Serializable类型提示。Jackson可以序列化/反序列化大多数Java类型。请查看com.fasterxml.jackson.databind.ser.stdcom.fasterxml.jackson.databind.deser.std。如果您使用ObjectMapper,则可以像这个指南中所述配置所需的功能。
忽略警告取决于您的对象类型。例如,有一个关于值类型序列化的好讨论。 为什么Java的基于值的类不应该被序列化?

实现Serializable接口有什么用处?为了消除警告,我还添加了transient关键字到变量类型中,这样做没问题吧,因为Jackson会忽略它。 - Kranthi
1
那么,实现Serializable接口有何用处呢?例如,当使用Java标准对象序列化机制(ObjectInputStream / ObjectOutputStream)时!Jackson是一个第三方库。 - Stephen C
@StephenC 所以JPA使用这种机制? - Kranthi
我没有说过那个。但是http://www.adam-bien.com/roller/abien/entry/do_jpa_entities_have_to - Stephen C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接