Java model 对象必须实现 Serializable 吗?
前言
我实习生。
今天( 2020-09-29 ),组长 review 我的代码时发现我 model 中的对象都没有实现 Serializable 接口,告诉我:”写得不对,所有有关落库、网络传输的对象都必须实现 Serializable 接口“。我不以为然,我印象中此接口是需要逐渐被废弃使用的,并且只有使用 Java 原生的序列化机制时才需要此接口。
我检查代码后还是觉得没必要实现 Serialzable 接口,原因:
-
rpc 业务层面使用 fastjson 编解码 json String
-
mybatis 的操作与 Serialzable 接口无关
-
业务层面前端入参和出参的 vo 也是 fastjson 编解码 json String
-
查了资料复习此接口的使用,发现和我印象中的理解偏差不大
以上,我认为此项目 model 中的对象不需要实现 Serializable 接口。
随后和组长、一些同事讨论了下,他们一致认为必须实现 Serialzable 接口,理由:
-
有序列化的地方必须实现
-
落库的对象必须实现
-
rpc 传输的对象必须实现
-
老的代码都实现了 Serialzable 接口,没有人是不这么做的,别想偷懒
-
老的项目中不实现 Serialzable 接口,然后踩坑了
我用我的原因进行反驳,同事的口径大致是:”如果我有能力承担不实现 Serialzable 接口带来的后果,那就不实现“。
后续
我老老实实地把 model 中的对象都加上了 Serialzable 接口。
后续怎么想怎么不对,我感觉自己的想法没错,我只是想把代码写得干净一点,想来问问大家对此接口的看法。
问题
-
Java model 对象必须实现 Serializable 吗?想知道大家都此接口的理解
-
如果我的想法没错,那么同事对 Serializable 接口的理解是否反映某些问题?
一些参考: https://v2ex.com/t/696834