声明类时需要实现Serializable接口吗?

Posted

技术标签:

【中文标题】声明类时需要实现Serializable接口吗?【英文标题】:It is required to implement Serializable interface when declaring a class? 【发布时间】:2020-06-18 15:11:02 【问题描述】:

在使用 Spring 编码时,我总是看到大多数开发人员实现了 Serializable 接口。所以,我想知道为什么在类的所有声明中使用此实现的原因。谢谢!

【问题讨论】:

此链接:Spring MVC - should my domain classes implement Serializable? 是否回答了您的问题? 【参考方案1】:

序列化不是 Spring 特有的功能。您使用序列化通过网络传输对象或存储在文件系统中。

但是根据有效的java,序列化是危险的,由于安全漏洞,不应该不惜一切代价使用。 序列化的另一个缺点是,当您向公众发布新版本的类时,您需要确保支持旧的反序列化类。

故事的寓意:永远不要在代码中使用序列化。欲了解更多信息,请阅读有效 Java 书籍的第 12 章。

【讨论】:

这个答案似乎完美地证明了问题本身吸引了意见。作为任何强力工具,序列化有其优点和缺点,它被广泛用于许多库和技术中。正如 Brian Goetz 在his exploratory article 中所说:需要明确的是,序列化的概念 没有任何问题;将对象转换为可以轻松跨 JVM 传输并在另一端重构的形式的能力是一个完全合理的想法。 尽管有种种罪过

以上是关于声明类时需要实现Serializable接口吗?的主要内容,如果未能解决你的问题,请参考以下文章

(小白)用java保存(读取)对象到本地 对象中所有的调用的类都要实现Serializable接口吗

IPC基础

抽象类和接口

Java实体对象为什么要实现Serializable接口?

Java 标记接口

对象存储