作者pao0111 (Pao)
站内java
标题Re: [心得] 序列化的小细节
时间Thu Oct 26 09:13:03 2006
※ 引述《NTUtzboy (台大资男哟)》之铭言:
: 问题出在这:(节录自J2SE1.4 API)
: The default serialization mechanism for an object writes the class of the
: object, the class signature, and the values of all non-transient and non-static
: fields. References to other objects (except in transient or static fields)
: cause those objects to be written also. Multiple references to a single object
: are encoded using a reference sharing mechanism so that graphs of objects can
: be restored to the same shape as when the original was written.
: 所以"a.object"储存了两个物件, "b.object"也同样储存了两个物件
: (不信的话可以直接把a.object档打开看, 一定看的懂的...)
: 因此读取的结果是, A有两个instances, B也有两个
: 其中某个A.b是指向一个B instance; 另一个A的refernce b则是指向另一个B instance
: 自己画画图就很清楚了...
: 不过也很感谢p大找出这个问题呢:)
: ※ 引述《PsMonkey (痞子军团团长)》之铭言:
: : 请原谅我帮忙加个注解...
: : (坦白说,我翻来翻去,看好久才知道确定差异在哪 XDXD)
: : //这是会导致 reference 失败的写法
: : //差异点在於,这边存在两个不同的档案当中
: : 我比较想知道,这时候的 a.b 会指到哪里去 @__@???
: : 为甚麽 a.b.a 又会指回来自己 @__@???
不敢当,讨论区本就互相交流嘛。
版大问的问题,N大也帮我回答了呀...^^
想说两种写法都不会有任何警告,是很容易忽略的细节,
所以才提出来给大家参考...^^
不然有互相参照的物件在网路传或在硬碟保存的时候,
多出来的reference可能让程式逻辑出错呢。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.71.41.202