通過 一個簡單的例子來認識 Serializable
package tt;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
class ObjectYouWannaSave implements Serializable
{
private static final long serialVersionUID = 3224332633725166982L;
//所有實現Serializable介面的類都需要增加 serialVersionUID
int x;
int y;
SubObject so = new SubObject();
}
class SubObject implements Serializable
{
private static final long serialVersionUID = 4224332633725166867L;
String s = "abc"; //String is OK, because String is java.io.Serializable
}
class Save
{ // in Save.java
public void main(String[] args)
{
ObjectYouWannaSave original = new ObjectYouWannaSave();
original.x = -1;
original.y = 100;
ObjectOutputStream out = null;
try
{
out = new ObjectOutputStream(new FileOutputStream(new File("c:/save.dat")));
out.writeObject(original); //將 對象寫入持久
}
catch(Exception e)
{
System.out.println("將執行個體寫入檔案出錯:"+e.toString());
}
finally
{
try{out.close();}catch(Exception e){}
}
}
}
class Read
{ // in Read.java
public void main(String[] args)
{
ObjectInputStream in = null;
try{
in = new ObjectInputStream(new FileInputStream(new File("c:/save.dat")));
ObjectYouWannaSave o = (ObjectYouWannaSave)in.readObject();
System.out.println("x="+o.x);
System.out.println("y="+o.y);
System.out.println("subobject.string=" + o.so.s);
}catch(Exception e){
}finally{
try{in.close();}catch(Exception e){}
}
}
}
public class TT
{
/** *//**
* 程式入口
* 2007-01-19 19:43
*/
public static void main(String[] args) {
// Save ss = new Save();
// ss.main(args);
Read rr = new Read();
rr.main(args);// 這是個最簡單的例子,先運行Save,以後什麼時候運行Read都可以(只要c:\save.dat檔案還存在就可以了)
}
}
/** *//**
* 對象的壽命通常隨著產生該對象的程式終止而終止,有時候,可能需要將對象的狀態儲存下來,
* 在需要的時候再將對象恢複,我們把對象的這種記錄自己狀態的以便將來再生的能力,叫做對象
* 的持久性(PERSISTENCE),對象通過寫出描述自己狀態的數值來記錄自己,這個過程叫對象
* 的序列化Serializable。序列化的主要任務是寫出對象執行個體變數的值。如果變數是另一個對象
* 的引用,則引用的對象也要序列化,這是個遞迴過程。
*/