日期:2014-05-20  浏览次数:20630 次

实现Serializable接口到底什么用啊?
下面是个书上的小例子,如果没有实现Serializable和实现了有什么区别么?

附小程序:
import   java.io.*;
import   java.util.*;

class   ObjectFileTest
{    
      public   static   void   main(String[]   args)
      {    
            Manager   boss   =   new   Manager( "Carl   Cracker ",   80000,   1987,   12,   15);
            boss.setBonus(5000);

            Employee[]   staff   =   new   Employee[3];

            staff[0]   =   boss;
            staff[1]   =   new   Employee( "Harry   Hacker ",   50000,   1989,   10,   1);
            staff[2]   =   new   Employee( "Tony   Tester ",   40000,   1990,   3,   15);
           
            try
            {    
                  //   save   all   employee   records   to   the   file   employee.dat
                  ObjectOutputStream   out   =   new   ObjectOutputStream(new   FileOutputStream( "employee.dat "));
                  out.writeObject(staff);
                  out.close();

                  //   retrieve   all   records   into   a   new   array
                  ObjectInputStream   in   =     new   ObjectInputStream(new   FileInputStream( "employee.dat "));
                  Employee[]   newStaff   =   (Employee[])   in.readObject();
                  in.close();

                  //   print   the   newly   read   employee   records
                  for   (Employee   e   :   newStaff)
                        System.out.println(e);
            }
            catch   (Exception   e)
            {    
                  e.printStackTrace();  
            }
      }
}

class   Employee   implements   Serializable
{
      public   Employee()   {}

      public   Employee(String   n,   double   s,   int   year,   int   month,   int   day)
      {    
            name   =   n;
            salary   =   s;
            GregorianCalendar   calendar   =   new   GregorianCalendar(year,   month   -   1,   day);