复制代码
- //:Blips.java
- //SimpleuseofExternalizable&apitfall
- importjava.io.*;
- importjava.util.*;
- classBlip1implementsExternalizable{
- publicBlip1(){
- System.out.println("Blip1Constructor");
- }
- publicvoidwriteExternal(ObjectOutputout)
- throwsIOException{
- System.out.println("Blip1.writeExternal");
- }
- publicvoidreadExternal(ObjectInputin)
- throwsIOException,ClassNotFoundException{
- System.out.println("Blip1.readExternal");
- }
- }
- classBlip2implementsExternalizable{
- Blip2(){
- System.out.println("Blip2Constructor");
- }
- publicvoidwriteExternal(ObjectOutputout)
- throwsIOException{
- System.out.println("Blip2.writeExternal");
- }
- publicvoidreadExternal(ObjectInputin)
- throwsIOException,ClassNotFoundException{
- System.out.println("Blip2.readExternal");
- }
- }
- publicclassBlips{
- publicstaticvoidmain(String[]args){
- System.out.println("Constructingobjects:");
- Blip1b1=newBlip1();
- Blip2b2=newBlip2();
- try{
- ObjectOutputStreamo=
- newObjectOutputStream(
- newFileOutputStream("Blips.out"));
- System.out.println("Savingobjects:");
- o.writeObject(b1);
- o.writeObject(b2);
- o.close();
- //Nowgetthemback:
- ObjectInputStreamin=
- newObjectInputStream(
- newFileInputStream("Blips.out"));
- System.out.println("Recoveringb1:");
- b1=(Blip1)in.readObject();
- //OOPS!Throwsanexception:
- //!System.out.println("Recoveringb2:");
- //!b2=(Blip2)in.readObject();
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }///:~
复制代码
- Constructingobjects:
- Blip1Constructor
- Blip2Constructor
- Savingobjects:
- Blip1.writeExternal
- Blip2.writeExternal
- Recoveringb1:
- Blip1Constructor
- Blip1.readExternal
复制代码
- //:Blip3.java
- //Reconstructinganexternalizableobject
- importjava.io.*;
- importjava.util.*;
- classBlip3implementsExternalizable{
- inti;
- Strings;//Noinitialization
- publicBlip3(){
- System.out.println("Blip3Constructor");
- //s,inotinitialized
- }
- publicBlip3(Stringx,inta){
- System.out.println("Blip3(Stringx,inta)");
- s=x;
- i=a;
- //s&iinitializedonlyinnon-default
- //constructor.
- }
- publicStringtoString(){returns+i;}
- publicvoidwriteExternal(ObjectOutputout)
- throwsIOException{
- System.out.println("Blip3.writeExternal");
- //Youmustdothis:
- out.writeObject(s);out.writeInt(i);
- }
- publicvoidreadExternal(ObjectInputin)
- throwsIOException,ClassNotFoundException{
- System.out.println("Blip3.readExternal");
- //Youmustdothis:
- s=(String)in.readObject();
- i=in.readInt();
- }
- publicstaticvoidmain(String[]args){
- System.out.println("Constructingobjects:");
- Blip3b3=newBlip3("AString",47);
- System.out.println(b3.toString());
- try{
- ObjectOutputStreamo=
- newObjectOutputStream(
- newFileOutputStream("Blip3.out"));
- System.out.println("Savingobject:");
- o.writeObject(b3);
- o.close();
- //Nowgetitback:
- ObjectInputStreamin=
- newObjectInputStream(
- newFileInputStream("Blip3.out"));
- System.out.println("Recoveringb3:");
- b3=(Blip3)in.readObject();
- System.out.println(b3.toString());
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }///:~
复制代码
- //:Logon.java
- //Demonstratesthe"transient"keyword
- importjava.io.*;
- importjava.util.*;
- classLogonimplementsSerializable{
- privateDatedate=newDate();
- privateStringusername;
- privatetransientStringpassword;
- Logon(Stringname,Stringpwd){
- username=name;
- password=pwd;
- }
- publicStringtoString(){
- Stringpwd=
- (password==null)?"(n/a)":password;
- return"logoninfo:
- "+
- "username:"+username+
- "
- date:"+date.toString()+
- "
- password:"+pwd;
- }
- publicstaticvoidmain(String[]args){
- Logona=newLogon("Hulk","myLittlePony");
- System.out.println("logona="+a);
- try{
- ObjectOutputStreamo=
- newObjectOutputStream(
- newFileOutputStream("Logon.out"));
- o.writeObject(a);
- o.close();
- //Delay:
- intseconds=5;
- longt=System.currentTimeMillis()
- +seconds*1000;
- while(System.currentTimeMillis()<t)
- ;
- //Nowgetthemback:
- ObjectInputStreamin=
- newObjectInputStream(
- newFileInputStream("Logon.out"));
- System.out.println(
- "Recoveringobjectat"+newDate());
- a=(Logon)in.readObject();
- System.out.println("logona="+a);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }///:~
复制代码
- logona=logoninfo:
- username:Hulk
- date:SunMar2318:25:53PST1997
- password:myLittlePony
- RecoveringobjectatSunMar2318:25:59PST1997
- logona=logoninfo:
- username:Hulk
- date:SunMar2318:25:53PST1997
- password:(n/a)
复制代码
- privatevoid
- writeObject(ObjectOutputStreamstream)
- throwsIOException;
- privatevoid
- readObject(ObjectInputStreamstream)
- throwsIOException,ClassNotFoundException
复制代码
- //:SerialCtl.java
- //Controllingserializationbyaddingyourown
- //writeObject()andreadObject()methods.
- importjava.io.*;
- publicclassSerialCtlimplementsSerializable{
- Stringa;
- transientStringb;
- publicSerialCtl(Stringaa,Stringbb){
- a="NotTransient:"+aa;
- b="Transient:"+bb;
- }
- publicStringtoString(){
- returna+"
- "+b;
- }
- privatevoid
- writeObject(ObjectOutputStreamstream)
- throwsIOException{
- stream.defaultWriteObject();
- stream.writeObject(b);
- }
- privatevoid
- readObject(ObjectInputStreamstream)
- throwsIOException,ClassNotFoundException{
- stream.defaultReadObject();
- b=(String)stream.readObject();
- }
- publicstaticvoidmain(String[]args){
- SerialCtlsc=
- newSerialCtl("Test1","Test2");
- System.out.println("Before:
- "+sc);
- ByteArrayOutputStreambuf=
- newByteArrayOutputStream();
- try{
- ObjectOutputStreamo=
- newObjectOutputStream(buf);
- o.writeObject(sc);
- //Nowgetitback:
- ObjectInputStreamin=
- newObjectInputStream(
- newByteArrayInputStream(
- buf.toByteArray()));
- SerialCtlsc2=(SerialCtl)in.readObject();
- System.out.println("After:
- "+sc2);
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }///:~
欢迎光临 仓酷云 (http://ckuyun.com/) | Powered by Discuz! X3.2 |