Java--ObjectInputStream和ObjectOutputStream

1.这两个输入输出流的作用?

  将Java对象写入到文件当中

2.什么是序列化和反序列化?

  序列化:将 Java对象 由内存中写入 文件

  反序列化:将 Java对象 由文件中读出来(读出来的对象可以使用多态机制,用一个object引用来指向)

3.待序列化的类要implements一个标识接口,Serializable。标识接口中没有定义任何的方法,只是起到标识的作用。JVM如果看到某个对象实现了某个标识接口,会对它特殊待遇

  --“特殊待遇”:jvm会在创建对象的时候,给这个类添加一个属性: static  final  long  serialVersionUID  (序列化版本号)

4.在序列化存储对象的时候,JVM会生成一个序列化版本号。当这个类进行后续的升级变动之后,再使用的时候会生成一个新的序列化版本号。当两个序列化版本号不一致的时候,JVM会认为这是两个不兼容的类,就会报错

  --解决办法:在创建要序列化的类的时候,就手动在类中创建一个序列化版本号的成员变量。这样就不会再产生兼容性的问题

5.如果不想让某属性参与序列化,使用transient关键字修饰即可。这样在反序列化的时候,该属性哪怕之前已经赋值,也会指向null

猜你喜欢

转载自www.cnblogs.com/RosemaryJie/p/13168737.html