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();
}
}
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();
}
}
2,writeObject用法api有说明。
3,print用法,api也有说明。
1.把文件流转化成对象流
2.把staff[i]对象序列化。
3.反序列化对象staff[i],调用staff[i]对象方法print(),可以测试是不是序列化反序列化成功。
public ObjectOutputStream(OutputStream out) throws IOException {
}
2. 已经new了ObjectOutputStream对象 可以直接加.接这个对象所包含的方法
3. Employee类自带的一个print()方法
可以看下类的源代码就能很快理解是干嘛用的,为什么这么用。
比如B b = new B(a);这种情况一般是a的接口不够多,但是最好别直接修改a的接口和实现,所以新实现一个B来拓展a的接口,这样就不用对a修改,达到经常说的对修改关闭,对拓展开放的思想。