使用Serializable的副作用?

时间:2014-07-21 09:02:01

标签: java serialization

查看服务器日志我在某些RMI缓存传输功能期间遇到域对象NotSerializableException。我注意到域对象没有实现Serializable接口;但我对实施Serializable持怀疑态度,因为我不知道它可能产生的副作用。它会在某个时候破裂吗?

如果没有副作用,为什么所有对象都不属于Serializable

1 个答案:

答案 0 :(得分:5)

实现Serializable没有任何副作用......除了使序列化机制考虑序列化它之外的显而易见的事情。

(当然,implement Serializable接口transient这一事实并不一定意味着序列化将起作用。例如,如果您的类具有不可序列化的实例字段,并且这些字段未声明为{{1}},则正常的序列化机制将失败。)

  

如果没有副作用,为什么所有对象都不能自行序列化?

一个原因是某些对象具有无法捕获并通过序列化表示的状态。示例包括连接到JVM,Java线程和Java进程外部的数据源或接收器的各种Streams。

第二个原因是(可以说)程序员应该决定是否适当以使类可序列化。可能不合适的示例包括持有敏感信息的类或内部可能发生变化的类......使反序列化成为问题 1


1 - 在某种程度上可以处理这个问题,但是程序员可能想说'#34;我不想被迫处理这个问题" ......对于他/她认为不应该序列化的课程。