import java.io.*;
public class SerialCtrl implements Serializable{
private String a;
private transient String b;
public SerialCtrl(String aa,String bb){
a="No Transient"+aa;
bb="Transient"+bb;
}
public SerialCtrl( ){ }
public String toString( ){
return a+"\n"+b;
}
private void writeObject(ObjectOutputStream stream)throws IOException{
stream.defaultWriteObject( );
stream.writeObject(b);
}
private void readObject(ObjectInputStream stream)throws IOException,ClassNotFoundException{
stream.defaultReadObject( );
b=(String)stream.readObject( );
}
public static void main(String[] args){
SerialCtrl sc=new SerialCtrl("Test1","Test2");
System.out.println("Before:\n"+sc);
ByteArrayOutputStream buf=new ByteArrayOutputStream( );
try{
ObjectOutputStream o=new ObjectOutputStream(buf);
o.writeObject(sc);
ObjectInputStream in=new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray( )));
//SerialCtrl vx=(SerialCtrl)in.readObject( );
//SerialCtrl sc2=new SerialCtrl( );
sc=(SerialCtrl)in.readObject( );
}catch(Exception e){System.out.println(e.toString( ));}
System.out.println("After:\n"+sc);
}
}
改为这样了就没有错误了。但是b好象是null,如何读出?
public class SerialCtrl implements Serializable{
private String a;
private transient String b;
public SerialCtrl(String aa,String bb){
a="No Transient"+aa;
bb="Transient"+bb;
}
public SerialCtrl( ){ }
public String toString( ){
return a+"\n"+b;
}
private void writeObject(ObjectOutputStream stream)throws IOException{
stream.defaultWriteObject( );
stream.writeObject(b);
}
private void readObject(ObjectInputStream stream)throws IOException,ClassNotFoundException{
stream.defaultReadObject( );
b=(String)stream.readObject( );
}
public static void main(String[] args){
SerialCtrl sc=new SerialCtrl("Test1","Test2");
System.out.println("Before:\n"+sc);
ByteArrayOutputStream buf=new ByteArrayOutputStream( );
try{
ObjectOutputStream o=new ObjectOutputStream(buf);
o.writeObject(sc);
ObjectInputStream in=new ObjectInputStream(new ByteArrayInputStream(buf.toByteArray( )));
//SerialCtrl vx=(SerialCtrl)in.readObject( );
//SerialCtrl sc2=new SerialCtrl( );
sc=(SerialCtrl)in.readObject( );
}catch(Exception e){System.out.println(e.toString( ));}
System.out.println("After:\n"+sc);
}
}
改为这样了就没有错误了。但是b好象是null,如何读出?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货