import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;public class ObjectSer
{   public static void main(String args[])
throws IOException,ClassNotFoundException{
int i;
Employee[] staff = new Employee[3];
staff[0] = new Employee("Dong",600,new Day(1998,9,1));
staff[1] = new Employee("Wang",1000,new Day(1958,2,15));
staff[2] = new Employee("Meng",750,new Day(1995,3,15));
FileOutputStream fo = new FileOutputStream("data.txt");
//so强制转换成fo?
ObjectOutputStream so = new ObjectOutputStream(fo);
try
{
//so.writeObject(staff[i]),“so”后面加“.”连接另一个方法“writeObject()”的用法,求解。
for(i=0;i<3;i++) so.writeObject(staff[i]);
so.close();
}
catch (IOException e)

  System.out.println("Saving Error:"+e);
  System.exit(1);
}
         for(i=0;i<3;i++) staff[i]=null;
 FileInputStream fi = new FileInputStream("data.txt");
 ObjectInputStream si = new ObjectInputStream(fi);
 try{
 for(i=0;i<3;i++)
 staff[1]=(Employee) si.readObject();
 si.close();
 }
 catch(IOException e){
 System.out.print("Reading Error:"+e);
 System.exit(1);
 }
 //staff[i].print(),“staff[i]”后面加“.”连接另一个方法“print()”的用法,求解。
 for(i=0;i<3;i++) staff[i].print();
}

解决方案 »

  1.   

    1,适配流
    2,writeObject用法api有说明。
    3,print用法,api也有说明。
      

  2.   

    这是序列化呢
    1.把文件流转化成对象流
    2.把staff[i]对象序列化。
    3.反序列化对象staff[i],调用staff[i]对象方法print(),可以测试是不是序列化反序列化成功。
      

  3.   

    1. ObjectOutputStream的构造方法
        public ObjectOutputStream(OutputStream out) throws IOException {
        }
    2. 已经new了ObjectOutputStream对象 可以直接加.接这个对象所包含的方法
    3. Employee类自带的一个print()方法
      

  4.   

    适配流是什么,java书上没翻到这个概念。
      

  5.   

    是设计模式上的理念,叫装饰者模式。
    可以看下类的源代码就能很快理解是干嘛用的,为什么这么用。
    比如B b = new B(a);这种情况一般是a的接口不够多,但是最好别直接修改a的接口和实现,所以新实现一个B来拓展a的接口,这样就不用对a修改,达到经常说的对修改关闭,对拓展开放的思想。