Java中的序列化可以将一个对象转换成一组byte对象,使这个对象在以后再被调用到时可以直接重组。
对象的序列化主要有两种用途:
1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
2) 在网络上传送对象的字节序列。
对象序列化包括如下步骤:
1) 让对象实现Serializable接口(Serializable接口是一个“标记接口”,不含任何方法);
2)创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;
3)通过对象输出流的writeObject()方法写对象。
File file=new File("input.dat");
file.createNewFile();
FileOutputStream fos=new FileOutputStream(file);
ObjectOutputStream oos=new ObjectOutputStream(fos);
oos.writeObject(s1);
oos.flush();
oos.close();
fos.close();
对象反序列化的步骤如下:
1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
2) 通过对象输入流的readObject()方法读取对象。
FileInputStream fis=new FileInputStream(file);
ObjectInputStream ois=new ObjectInputStream(fis);
Student s2= (Student)ois.readObject();
ois.close();
fis.close();
另外,要注意,子类序列化,父类也必须序列化;父类序列化,所有子类都需要序列化。