Externalizable接口继承了Serializable接口,用来在序列化时手动的把需要的对象信息进行序列化。 Externalizable接口提供了两个方法:writeExternal(ObjectOuput out) 和 readExternal(ObjectInput in)  在你需要被序列化的类中实现这两个方法,这样在此类序列化时这两个方法将被自动执行,用以可定制地序列化此类。举例如下: 假如你需要序列化一个类Test: import java.io.*; 
class Test implements Externalizable{  //Test类必须实现Externalizable接口  private String letterstates = "fanruijun";  private int num  = 0;  public Test(){  }    public void writeExternal(ObjectOutput out) throws IOException {               out.writeObject(letterstates);               out.write(88); //在序列化的数据最后加个88  } 
 public void readExternal(ObjectInput in) throws IOException,     ClassNotFoundException {                 letterstates = (String)in.readObject();                 num = in.read();  //把数字88加进来  }  public void putOut(){ //测试    System.out.println(letterstates +num);  } }
 
  序列化上面的Test类:AppTest 
  import java.io.*; 
public class AppTest { 
         private void saveGame(){                 Test m = new Test();                 if (m != null){                         try{                                 FileOutputStream ostream = new FileOutputStream("t.txt");                                 ObjectOutputStream p = new ObjectOutputStream(ostream); 
                                p.writeObject(m); //writeExternal()自动执行 
                                p.flush();                                 ostream.close();                         } catch (IOException ioe) {                                 System.out.println ("Error saving file:");                                 System.out.println (ioe.getMessage());                         }                 }         } 
        private void loadGame(){                 try{                         FileInputStream instream = new FileInputStream("t.txt");                         ObjectInputStream p = new ObjectInputStream(instream);                         Test m = (Test)p.readObject();//readExternal()自动执行                     m.putOut();                         instream.close();                 } catch (Exception e) {                         System.out.println ("Error loading file:");                         System.out.println (e.getMessage());   }         } 
 public static void main(String[] args){   new AppTest().saveGame();   new AppTest().loadGame();  } }
  运行结果: D:\test\basic>javac AppTest.java 
D:\test\basic>javac Test.java 
D:\test\basic>java AppTest fanruijun88
   
 
  |