java - 使用 Serializable 的副作用?

标签 java serialization

查看服务器日志 我在某些 RMI 缓存传输函数期间遇到了域对象的 NotSerializableException。我注意到域对象没有实现 Serializable 接口(interface);但是我对实现 Serializable 有点怀疑,因为我不知道它可能的副作用。它会在某个时候破裂吗?

如果没有副作用,为什么所有的对象都不能自己Serializable

最佳答案

实现 Serializable 没有副作用...除了使序列化机制考虑序列化的明显副作用。

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

If there are no side effects why all the objects are not Serializable by their own?

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

第二个原因是(可以说)程序员应该决定将类序列化是否合适。它可能不合适的示例包括包含敏感信息的类或内部结构容易更改的类……使反序列化成为问题1


1 - 可以在一定程度上处理这个问题,但程序员可能想说“我不想被迫处理这个问题”......对于他/她认为不应该连载。

关于java - 使用 Serializable 的副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861218/

相关文章:

java - 在 java 中使用 printf 时如何放置美元符号?

java - 使用 MySQL 将多个行值的总和计算到 Java 中的不同行

Java:如何从不基于键的 HashMap 中正确删除值

java - 枚举函数?

JavaFX 2 BorderPane 使用完整空间

使用 Jackson 对带有循环引用的键进行序列化

java - 无法读取在 C++ 中序列化的 Java 数据

java - 撤消/重做功能 Java 的对象序列化

python - 具有 unique_together 约束的 django rest 序列化程序中的 read_only 字段

c# - 序列化 XML 并保存到 Azure、C#