4

I want to know the disadvantages of making a class serializable in java;

disadvantages in terms of memory allocation and accessibility.

any link on this topic will be helpful

Thanks in advance.

4

3 回答 3

14

内存分配方面的缺点

零。

和可访问性

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

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

行为implements Serializable本身的负面后果为零。

我不知道您所说的“安全”是什么意思,但是使用序列化进行深拷贝当然可以。

于 2013-05-28T10:11:10.500 回答
1

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

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

于 2013-05-28T09:58:34.747 回答
1

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

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

于 2013-05-28T10:17:39.810 回答