当前位置: 首页 > java>阅读正文

关于对象序列化的正确有哪些(多选)

2021.12.20 朱丰华 1555 次 留下评论 947字

  1. 序列化可把对象变成字节流,所以有利于网络传输
  2. 序序化可以保存对象的状态,可以存储和恢复
  3. 所有的对象都必须要序列化
  4. 如果对象没有实现 Serilizable 接口,就无法进行序列化和反序列化

答案:ABD

相关知识点:

1.什么是序列化?

  • 序列化:序列化是将对象转化为字节流。
  • 反序列化:反序列化是将字节流转化为对象。

2.序列化的作用?

  • 序列化可以将对象的字节序列持久化-保存在内存、文件、数据库中。(后缀.serialize)
  • 在网络上传送对象的字节序列。
  • RMI(远程方法调用)

序列化方法?

3.序列化和反序列化

  • 序列化:java.io.ObjectOutputStream 类的 writeObject() 方法可以实现序列化
  • 反序列化:java.io.ObjectInputStream 类的 readObject() 方法用于实现反序列化。

4.对象序列化

被序列化的类必须属于 Enum、Array 和 Serializable 类型其中的任何一种。

如果不是 Enum、Array 的类,如果需要序列化,必须实现 java.io.Serializable 接口(String类默认实现Serializable),否则将抛出 NotSerializableException 异常。

另外,对象中使用transient修饰的变量则该属性不会被序列化。

5.关于serialVersionUID

serialVersionUID 是 Java 为每个序列化类产生的版本标识。它可以用来保证在反序列时,发送方发送的和接受方接收的是可兼容的对象。如果接收方接收的类的 serialVersionUID 与发送方发送的 serialVersionUID 不一致,会抛出 InvalidClassException。

如果可序列化类没有显式声明 serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认 serialVersionUID 值。尽管这样,还是建议在每一个序列化的类中显式指定 serialVersionUID 的值。因为不同的 jdk 编译很可能会生成不同的 serialVersionUID 默认值,从而导致在反序列化时抛出 InvalidClassExceptions 异常。

serialVersionUID 字段必须是 static final long 类型。

本篇完,还有疑问?留下评论吧

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注