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.
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.
内存分配方面的缺点
零。
和可访问性
零。我不明白这个问题,但答案仍然为零。
如果您不想序列化特定的类成员,则始终可以将其设为瞬态,这将节省与包含该成员的类相关的任何序列化开销。
行为implements Serializable
本身的负面后果为零。
我不知道您所说的“安全”是什么意思,但是使用序列化进行深拷贝当然可以。
如果您查看 Java 及其会话对象,则会使用纯对象序列化。
假设应用程序会话的生命周期相当短,即最多只有几个小时,那么对象序列化很简单,得到很好的支持,并且内置在 Java 会话概念中。
但是,当数据持久化时间较长时,可能是几天或几周,并且您不得不担心应用程序的新版本,序列化很快就会变得邪恶。
任何优秀的 Java 开发人员都知道,如果您打算序列化一个对象,即使是在会话中,您也需要一个真正的序列化 ID(serialVersionUID),而不仅仅是一个 1L,并且您需要实现 Serializable 接口。
但是,大多数开发人员并不了解 Java 反序列化过程背后的真正规则。
如果您的对象发生了变化,不仅仅是向对象添加简单的字段,即使序列化 ID 没有更改,Java 也可能无法正确反序列化对象。
突然之间,您无法再检索您的数据,这本质上是不好的。
实际上,我能想到的唯一缺点是为对象公开了一个伪构造函数。例如,如果你让一个经典的单例可序列化,你还应该引入一个 'readResolve' 方法。
除此之外,没有缺点。
关于深拷贝,您应该使用 Clonable 工具,因为使用本机 memcpy 可以更快地工作。