对象序列化的问题 本帖最后由 didengxiaren 于 2010-07-13 14:10:03 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 System.out.println(newStaff[0]==((Manager)newStaff[1]).getEmployee()); 因为他们是同一个引用。你测试下就知道了 你看的是翻译过来的书吧?没有断章取义吧?我觉得 “这不是我们所希望的” 这几个字你也要加的更红才对。我对这话和代码的理解是这样的:1:当使用 ObjectOutputStream 写一个对象时, ObjectOutputStream 会将该对象中引用的所有对象一并序列化(一起写了)。即你在2楼的问题:当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化2:如果写入多个对象,且这些对象之间存在引用关系(就像你的例子中 Manager 中有一个 Employee 的引用),那么你在“写”这些对象的时候需要使用同一个 ObjectOutputStream 。否则你读出来以后,就会有这个现象:执行 Employee .raiseSalary(10); 后 Manager 中的 Employee 并不会同步 。也就是说此时 Manager 中的 Employee 和外部的 Employee 是两个对象。而“这不是我们所希望的”。3:当使用 ObjectInputStream 读一些对象时,同一个 ObjectInputStream 所读出来的所有对象,如果这些对象在写入前有引用关系,那么读出来后,这中引用关系仍然存在。这仅仅是我的理解~~呵呵~~~~看你的了~~~~ 明白了,这个在网上看的,后来看了一下core java发现是相同的例子,而且讲得很详细今天又看了大半天的对象序列化,哎,太慢了 关于Java学习之路给点意见月资料 感谢帮助!java数组的排序! 看看这个程序怎么写啊! 我认为C++很垃圾,但他是专业基础课,怎么办? 如何让一个.jar文件能够双击之后运行,在线等,马上结贴 救救小弟吧 最好有ide能自动处理Exception的 poi在什么地方下载? 谁有jdbc driver for DBF?非odbc 小白问一个弱智问题! 一道java基础题,大家试试。 关于Java环境配置问题
因为他们是同一个引用。你测试下就知道了
没有断章取义吧?
我觉得 “这不是我们所希望的” 这几个字你也要加的更红才对。
我对这话和代码的理解是这样的:
1:当使用 ObjectOutputStream 写一个对象时, ObjectOutputStream 会将该对象中引用的所有对象一并序列化(一起写了)。即你在2楼的问题:当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化
2:如果写入多个对象,且这些对象之间存在引用关系(就像你的例子中 Manager 中有一个 Employee 的引用),那么你在“写”这些对象的时候需要使用同一个 ObjectOutputStream 。否则你读出来以后,就会有这个现象:执行 Employee .raiseSalary(10); 后 Manager 中的 Employee 并不会同步 。也就是说此时 Manager 中的 Employee 和外部的 Employee 是两个对象。而“这不是我们所希望的”。
3:当使用 ObjectInputStream 读一些对象时,同一个 ObjectInputStream 所读出来的所有对象,如果这些对象在写入前有引用关系,那么读出来后,这中引用关系仍然存在。这仅仅是我的理解~~呵呵~~~~看你的了~~~~
今天又看了大半天的对象序列化,哎,太慢了