
Java的序列化流程如下:

Java的反序列化流程如下:

注意:並不是所有類都需要進行序列化,主要原因有兩個
1)安全問題。Java中有的類屬於敏感類,此類的對象數據不便對外公開,而序列化的對象數據很容易進行破解,無法保證其數據的安全性,因此一般這種類型的對象不會進行序列化。
2)資源問題。可以使用序列化字節流創建對象,而且這種創建時不受限制的,有時過多地創建對象會造成很大的資源問題,因此此類對象也不適宜進行序列化。
Serializable
Serializable是Java提供的一個序列化接口,它是一個空接口,專門為對象提供標准的序列化跟反序列化操作。
序列化過程:
1 Person p = new Person("name","id");
2 File file = new File("cache.txt");
3 FileOutputStream output = new FileOutputStream(file);
4 ObjectOutputStream objectOutputStream = new ObjectOutputStream(output);
5 objectOutputStream.writeObject(p);
6 output.close();
7 objectOutputStream.close();
反序列化過程:
1 File file = new File("cache.txt");
2 FileInputStream input= new FileInputStream(file);
3 ObjectInputStream objectInputStream = new ObjectInputStream(input);
4 Person p = (Person)objectInputStream.readObject();
5 System.out.println(p.getName()+"---"+p.getId());
6 input.close();
7 objectInputStream.close();