【发布时间】:2016-06-06 03:06:27
【问题描述】:
- 我注意到许多库类“ArrayList”、“String”甚至例外都具有serialVersionUID。为什么他们会变成这样。这样做有什么实际用途。仅供参考,我熟悉序列化的概念。请指出它的实际用途。
查找 ClassCastException 的 serialversionUid 供您参考
public class ClassCastException extends RuntimeException {
private static final long serialVersionUID = -9223365651070458532L;
这些对象的状态会持续到哪里?这些对象的状态将被检索到哪里?
- 我目前在一个项目中工作,我们正在制作 REST 控制器,其输入和输出参数将为 JSON。我们正在为 i/p 和 o/p 参数创建简单的 POJO。我看到人们使这些 POJO 可序列化。什么这样做的意义何在?
但我还没有看到**out.readObject** 或out.writeobject 用于写入和读取对象的状态。POJO 的状态是否会持续存在,只是使其可序列化?如果是,它将存储在哪里?
【问题讨论】:
-
POJO 的状态是否会持续存在,只是使其可序列化? 不,它是可持久的。 如果是,它将存储在哪里?无论您将它存储在哪里。
-
"请指出它的实际用途。" ——以便它们可以被序列化?比如存储在一个文件中,或者使用RMI通过网络传输等等。
-
在我的第二个 qs 中,POJO 只是可序列化的。没有写任何东西来坚持它。我在 qs 中提到了这一点。所以它不会自动持续存在。对吧?如果可以的话,请回答我的两个问题。
-
@LouisWasserman 您缺少 OP 点/困惑。将
Serializable添加到类使其有资格进行序列化,Java 运行时提供默认的序列化策略。但是,它不会在不编写进一步代码的情况下序列化对象。您仍然需要实际调用ObjectOutputStream.writeObject(Object obj)才能进行序列化。 -
@Andreas 我不同意你对 OP 的阅读;在我看来,他们并不理解 Java 运行时提供了默认的序列化策略。
标签: java json rest serialization pojo