- 序列化可把对象变成字节流,所以有利于网络传输
- 序序化可以保存对象的状态,可以存储和恢复
- 所有的对象都必须要序列化
- 如果对象没有实现 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 类型。
本篇完,还有疑问?留下评论吧