如何完成transient反序列化呢?

y11111494 2012-08-03 06:07:09
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()方法来实现?


谢谢





-------------------------------------------

-------------------------------------------

-------------------------------------------
-------------------------------------------
...全文
129 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2012-08-03
  • 打赏
  • 举报
回复
文档里有说明transient字段序列化的时候是不保存的,没有保存的信息,你怎么能反序列化回来?
风尘中国 2012-08-03
  • 打赏
  • 举报
回复
完全不知道你在想什么 ,transient 关键字修饰了成员变量 ,那么在序列化之后就根本没有被存到文件当中,你反序列化的时候无论怎么处理都无法 反序列化回来的。

要么你不用transient 修饰 int y=7,要么你重新利用其他的 文件读写单独将这个变量 持久化,不过没必要就把transient 去掉就行了

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧