import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;public class Retread {
 
public static void main(String[] args) { SpecialSerial s=new SpecialSerial();

try{
ObjectOutputStream os=new ObjectOutputStream(new FileOutputStream("myFile"));
os.writeObject(s); os.close();
System.out.println( ++s.z+" ");

ObjectInputStream is=new ObjectInputStream(new FileInputStream("myFile"));
SpecialSerial s2=(SpecialSerial) is.readObject();
System.out.println(s2.y+" "+s2.z);
}catch (Exception e) {
// TODO: handle exception
}

}

}
class SpecialSerial implements Serializable{
transient int y=7;
static int z=9;
}
要求输出时10 7 10关键是如何输出7在类SpecialSerial中如何重写readObject()方法来实现?
谢谢---------------------------------------------------------------------------------------------------------------------------------
-------------------------------------------

解决方案 »

  1.   

    完全不知道你在想什么 ,transient 关键字修饰了成员变量 ,那么在序列化之后就根本没有被存到文件当中,你反序列化的时候无论怎么处理都无法 反序列化回来的。要么你不用transient 修饰 int y=7,要么你重新利用其他的 文件读写单独将这个变量 持久化,不过没必要就把transient 去掉就行了
      

  2.   

    文档里有说明transient字段序列化的时候是不保存的,没有保存的信息,你怎么能反序列化回来?