欢迎来到天天文库
浏览记录
ID:14725130
大小:47.50 KB
页数:22页
时间:2018-07-30
《深入探索java对象的序列化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、深入探索Java对象的序列化深入探索Java对象的序列化对象序列化就是把对象写入到输出流中,用来存储或者传输。对象的反序列化就是从输入流中读取对象。要序列化的对象应该实现Serializable接口。Serializable接口是一个标识接口,没有抽象方法。Serializable有一个子接口Externalizable,实现Externalizable接口的类可以自行控制对象序列化荷反序列化过程。一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。实现了序列化接口的类,如果其成员不需要序列化进去,则使
2、用transient关键字进行修饰。下面给出个例子:importjava.io.*;/***Java对象的序列化测试*File:ObjectStreamTest.java*User:leizhimin*Date:2008-3-1220:41:43*/publicclassObjectStreamTest{publicstaticvoidmain(Stringargs[]){testObjectSeri();testObjectInSeri();}/***对象序列化测试*/publicstaticvoidtestObje
3、ctSeri(){Personperson=newPerson("熔岩","341022225562156","lavasoft");FileOutputStreamfos=null;ObjectOutputStreamoos=null;try{fos=newFileOutputStream("Q:\study\java5study\src\io\person.dat");oos=newObjectOutputStream(fos);oos.writeObject(person);}catch(FileNot
4、FoundExceptione){System.out.println("找不到指定的文件!");e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}finally{try{oos.flush();oos.close();}catch(IOExceptione){e.printStackTrace();}}}/***对象反序列化测试*/publicstaticvoidtestObjectInSeri(){FileInputStreamfis=nul
5、l;ObjectInputStreamois=null;Personperson=null;try{fis=newFileInputStream("Q:\study\java5study\src\io\person.dat");ois=newObjectInputStream(fis);person=(Person)ois.readObject();}catch(FileNotFoundExceptione){e.printStackTrace();}catch(IOExceptione){e.printSt
6、ackTrace();}catch(ClassNotFoundExceptione){e.printStackTrace();}finally{try{ois.close();}catch(IOExceptione){e.printStackTrace();}}System.out.println(person.toString());}}/***测试序列化所用的类*/classPersonimplementsSerializable{privateStringusername;privateStringcardNum
7、ber;privatetransientStringpassword;publicPerson(Stringusername,StringcardNumber,Stringpassword){this.username=username;this.cardNumber=cardNumber;this.password=password;}publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.usernam
8、e=username;}publicStringgetCardNumber(){returncardNumber;}publicvoidsetCardNumber(StringcardNumber){this.cardNumber=cardNumber;}publicStringgetPassword(){returnpasswo
此文档下载收益归作者所有