代碼以下:java
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class MyTest implements Serializable{ private static final long serialVersionUID = 1L; private String name="SheepMu"; private transient int age=24; private Book book=new Book("我是一本書"); public static void main(String[] args) { try { ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("my.out"));//輸出流保存的文件名爲 my.out ;ObjectOutputStream能把Object輸出成Byte流 MyTest myTest=new MyTest(); oos.writeObject(myTest); oos.flush(); //緩衝流 oos.close(); //關閉流 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("success"); fan(); } public static void fan()//反序列的過程 { ObjectInputStream oin = null;//局部變量必需要初始化 try { oin = new ObjectInputStream(new FileInputStream("my.out")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } MyTest mts = null; try { mts = (MyTest ) oin.readObject();//由Object對象向下轉型爲MyTest對象 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("name="+mts.name); System.out.println("age="+mts.age); System.out.println("書"+mts.book.getBookname()); } }
意思就是:測試
book類省略;spa
若是不用transient 關鍵字 修飾的話,每個 測試類中的屬性都會初始化,在返序列化中能夠拿到值指針
(若是在成員變量中出現自身定義的類型,則該類型必須實現serilizable接口)code
若是用transient 修飾的話,則拿到的值爲空甚至出現空指針對象