把原本在内存中的对象状态 变成可存储或传输的过程称之为序列化。序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
序列化前的对象和反序列化后得到的对象,内容是一样的(且对象中包含的引用也相同),但两个对象的地址不同。换句话说,序列化操作可以实现对任何可Serializable对象的”深度复制(deep copy)"。
在以下几种情况时,需要序列化:
当你想把的内存中的对象状态保存到一个文件中或者数据库中,以便可以在以后重新创建精确的副本;当你想用套接字在网络上传送对象的时候(从一个应用程序域发送到另一个应用程序域中);当你想通过RMI传输对象的时候;Serializable是标识接口,没有任何需要实现的方法
1. 实现Serializable接口 2. 创建FileOutputStream(输出流)对象fos 3. 通过输出流对象fos创建一个对象输出流就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流
public static void main(String[] args) { Person person = new Person( try { //序列化 System.out.println(person); ObjectOutputStream oos= new ObjectOutputStream(new FileOutputStream("data.txt")); oos.writeObject(person ); //通过对象输出流,将label写入流中 oos.close(); //反序列化 ObjectInputStream ois= new ObjectInputStream(new FileInputStream("person .txt")); person = (Person ) ois.readObject(); ois.close(); System.out.println(person); } catch (Exception e) { e.printStackTrace(); } }