对象序列化的问题 本帖最后由 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 编译报错 poi操纵excel如何把浮点数已百分比的格式显示出来 【在线等】Tomcat服务器线程满宕机问题(跪求解决方法) 请问以下正则表达式怎样写.十分急.先谢过了... 提个小问题,大家帮忙看看 字符串的处理问题,请帮忙看看 欢迎lanc的到来 webshpere+jbuilder6中如何加入Finder方法? 初学请教 Java程序中如何执行系统命令?拜托了! 一道java基础题,大家试试。 关于Java环境配置问题
因为他们是同一个引用。你测试下就知道了
没有断章取义吧?
我觉得 “这不是我们所希望的” 这几个字你也要加的更红才对。
我对这话和代码的理解是这样的:
1:当使用 ObjectOutputStream 写一个对象时, ObjectOutputStream 会将该对象中引用的所有对象一并序列化(一起写了)。即你在2楼的问题:当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化
2:如果写入多个对象,且这些对象之间存在引用关系(就像你的例子中 Manager 中有一个 Employee 的引用),那么你在“写”这些对象的时候需要使用同一个 ObjectOutputStream 。否则你读出来以后,就会有这个现象:执行 Employee .raiseSalary(10); 后 Manager 中的 Employee 并不会同步 。也就是说此时 Manager 中的 Employee 和外部的 Employee 是两个对象。而“这不是我们所希望的”。
3:当使用 ObjectInputStream 读一些对象时,同一个 ObjectInputStream 所读出来的所有对象,如果这些对象在写入前有引用关系,那么读出来后,这中引用关系仍然存在。这仅仅是我的理解~~呵呵~~~~看你的了~~~~
今天又看了大半天的对象序列化,哎,太慢了