我注意到许多库类“ 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用于写入和读取对象的状态.POJ​​O的状态是否会持久化只是使其可序列化?如果是,它将存储在哪里?

最佳答案

如果需要全文,请阅读规范:Java Object Serialization Specification


  [...]许多库类“ ArrayList”,“ String”,甚至例外都具有serialVersionUID。他们为什么这样做。


为了支持在读取使用该类的较早版本编写的对象时的向后兼容性。请参见Stream Unique Identifiers


  这些对象的状态将持续到哪里?


无论您决定在哪里。请参见Writing to an Object Stream


  这些对象的状态将在哪里检索?


无论放在哪里。请参见Reading from an Object Stream


  [...]输入和输出参数将为JSON。 [...]我看到人们使这些POJO可序列化。这样做有什么意义?


没有。 JSON未使用Java序列化。 Java序列化创建二进制流。 JSON创建文本。


  POJO的状态是否会一直保持可序列化状态才能保持下去?如果是,它将存储在哪里?


不,请参见上面。

07-24 09:46
查看更多