在java中使类可序列化的缺点是什么

时间:2013-05-28 09:55:27

标签: java memory serialization

我想知道在java中使类可序列化的缺点;

内存分配和可访问性方面的缺点。

关于此主题的任何链接都会有所帮助

提前致谢。

3 个答案:

答案 0 :(得分:13)

  

内存分配方面的缺点

零。

  

和辅助功能

零。我不明白这个问题,但答案仍然是零。

如果您不希望序列化特定的类成员,则可以始终将其设置为瞬态,这将节省与包含该成员的类关联的任何序列化开销。

implements Serializable本身的行为没有负面影响。

我不知道'安全'是什么意思,但使用序列化进行深层复制肯定有效。

答案 1 :(得分:1)

实际上,我能想到的唯一缺点是为对象公开了一个伪构造函数。 例如,如果您将经典单例序列化,则还应引入“readResolve”方法。
除此之外,没有缺点。

关于深层复制,您应该使用Clonable工具,因为它使用本机memcpy可以更快地工作。

答案 2 :(得分:0)

  

如果查看Java及其会话对象,则使用纯对象序列化。
假设应用程序会话相当短暂,意味着最多几个小时,对象序列化很简单,得到很好的支持并且内置到会话的Java概念中。
但是,当数据持久性持续时间较长时,可能是数天或数周时,您不得不担心应用程序的新版本,序列化很快就会变得邪恶。
正如任何优秀的Java开发人员所知,如果您计划序列化对象,即使在会话中,您也需要一个真正的序列化ID(serialVersionUID),而不仅仅是1L,您需要实现Serializable接口。
但是,大多数开发人员并不了解Java反序列化过程背后的真正规则。
如果您的对象已更改,不仅仅是向对象添加简单字段,即使序列化ID未更改,Java也可能无法正确反序列化对象。
突然间,您无法再检索数据,这本质上是不好的。

请访问https://softwareengineering.stackexchange.com/questions/191269/java-serialization-advantages-and-disadvantages-use-or-avoid