﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-IT Life-文章分类-J2se-&gt;java.io</title><link>http://www.blogjava.net/tony/category/13561.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 03 Mar 2007 09:13:58 GMT</lastBuildDate><pubDate>Sat, 03 Mar 2007 09:13:58 GMT</pubDate><ttl>60</ttl><item><title>初探序列化---Serializable </title><link>http://www.blogjava.net/tony/articles/75548.html</link><dc:creator>tony-dl</dc:creator><author>tony-dl</author><pubDate>Tue, 17 Oct 2006 02:20:00 GMT</pubDate><guid>http://www.blogjava.net/tony/articles/75548.html</guid><wfw:comment>http://www.blogjava.net/tony/comments/75548.html</wfw:comment><comments>http://www.blogjava.net/tony/articles/75548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/tony/comments/commentRss/75548.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/tony/services/trackbacks/75548.html</trackback:ping><description><![CDATA[类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段，仅用于标识可序列化的语义。<br /><br />　　Java的"对象序列化"能让你将一个实现了Serializable接口的对象转换成一组byte，这样日后要用这个对象时候，你就能把这些byte数据恢复出来，并据此重新构建那个对象了。<br /><br />　　要想序列化对象，你必须先创建一个OutputStream，然后把它嵌进ObjectOutputStream。这时，你就能用writeObject( )方法把对象写入OutputStream了。<br /><br />　　writeObject 方法负责写入特定类的对象的状态，以便相应的 readObject 方法可以还原它。通过调用 out.defaultWriteObject 可以调用保存 Object 的字段的默认机制。该方法本身不需要涉及属于其超类或子类的状态。状态是通过使用 writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream 来保存的。
<p>　　读的时候，你得把InputStream嵌到ObjectInputStream里面，然后再调用readObject( )方法。不过这样读出来的，只是一个Object的reference，因此在用之前，还得先下传。readObject 方法负责从流中读取并还原类字段。它可以调用 in.defaultReadObject 来调用默认机制，以还原对象的非静态和非瞬态字段。<br /><br />　　　defaultReadObject 方法使用流中的信息来分配流中通过当前对象中相应命名字段保存的对象的字段。这用于处理类发展后需要添加新字段的情形。该方法本身不需要涉及属于其超类或子类的状态。状态是通过使用 writeObject 方法或使用 DataOutput 支持的用于基本数据类型的方法将各个字段写入 ObjectOutputStream 来保存的。<br /><br />　　看一个列子：<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_63_1703_Open_Image" onclick="this.style.display='none'; Codehighlighter1_63_1703_Open_Text.style.display='none'; Codehighlighter1_63_1703_Closed_Image.style.display='inline'; Codehighlighter1_63_1703_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_63_1703_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_63_1703_Closed_Text.style.display='none'; Codehighlighter1_63_1703_Open_Image.style.display='inline'; Codehighlighter1_63_1703_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> tree </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> java.io.Serializable </span><span id="Codehighlighter1_63_1703_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_63_1703_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> tree left; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> tree right; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> id; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> level; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> count </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_220_390_Open_Image" onclick="this.style.display='none'; Codehighlighter1_220_390_Open_Text.style.display='none'; Codehighlighter1_220_390_Closed_Image.style.display='inline'; Codehighlighter1_220_390_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_220_390_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_220_390_Closed_Text.style.display='none'; Codehighlighter1_220_390_Open_Image.style.display='inline'; Codehighlighter1_220_390_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> tree(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> depth) </span><span id="Codehighlighter1_220_390_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_220_390_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        id </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> count</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        level </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> depth; <br /><img id="Codehighlighter1_293_383_Open_Image" onclick="this.style.display='none'; Codehighlighter1_293_383_Open_Text.style.display='none'; Codehighlighter1_293_383_Closed_Image.style.display='inline'; Codehighlighter1_293_383_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_293_383_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_293_383_Closed_Text.style.display='none'; Codehighlighter1_293_383_Open_Image.style.display='inline'; Codehighlighter1_293_383_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (depth </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_293_383_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_293_383_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            left </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> tree(depth</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            right </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> tree(depth</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_428_718_Open_Image" onclick="this.style.display='none'; Codehighlighter1_428_718_Open_Text.style.display='none'; Codehighlighter1_428_718_Closed_Image.style.display='inline'; Codehighlighter1_428_718_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_428_718_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_428_718_Closed_Text.style.display='none'; Codehighlighter1_428_718_Open_Image.style.display='inline'; Codehighlighter1_428_718_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> print(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> levels) </span><span id="Codehighlighter1_428_718_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_428_718_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> level; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">  </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">node </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> id); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (level </span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000"> levels </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> left </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            left.print(levels); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (level </span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000"> levels </span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"> right </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">) <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            right.print(levels); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_767_1700_Open_Image" onclick="this.style.display='none'; Codehighlighter1_767_1700_Open_Text.style.display='none'; Codehighlighter1_767_1700_Closed_Image.style.display='inline'; Codehighlighter1_767_1700_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_767_1700_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_767_1700_Closed_Text.style.display='none'; Codehighlighter1_767_1700_Open_Image.style.display='inline'; Codehighlighter1_767_1700_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main (String argv[]) </span><span id="Codehighlighter1_767_1700_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_767_1700_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_783_1624_Open_Image" onclick="this.style.display='none'; Codehighlighter1_783_1624_Open_Text.style.display='none'; Codehighlighter1_783_1624_Closed_Image.style.display='inline'; Codehighlighter1_783_1624_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_783_1624_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_783_1624_Closed_Text.style.display='none'; Codehighlighter1_783_1624_Open_Image.style.display='inline'; Codehighlighter1_783_1624_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> </span><span id="Codehighlighter1_783_1624_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_783_1624_Open_Text"><span style="COLOR: #000000">{ <br /><img id="Codehighlighter1_798_816_Open_Image" onclick="this.style.display='none'; Codehighlighter1_798_816_Open_Text.style.display='none'; Codehighlighter1_798_816_Closed_Image.style.display='inline'; Codehighlighter1_798_816_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_798_816_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_798_816_Closed_Text.style.display='none'; Codehighlighter1_798_816_Open_Image.style.display='inline'; Codehighlighter1_798_816_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_798_816_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_798_816_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 创建一个文件写入序列化树。 </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            FileOutputStream ostream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileOutputStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tree.tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br /><img id="Codehighlighter1_905_915_Open_Image" onclick="this.style.display='none'; Codehighlighter1_905_915_Open_Text.style.display='none'; Codehighlighter1_905_915_Closed_Image.style.display='inline'; Codehighlighter1_905_915_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_905_915_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_905_915_Closed_Text.style.display='none'; Codehighlighter1_905_915_Open_Image.style.display='inline'; Codehighlighter1_905_915_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_905_915_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_905_915_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 创建输出流 </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ObjectOutputStream p </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ObjectOutputStream(ostream); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1000_1014_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1000_1014_Open_Text.style.display='none'; Codehighlighter1_1000_1014_Closed_Image.style.display='inline'; Codehighlighter1_1000_1014_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1000_1014_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1000_1014_Closed_Text.style.display='none'; Codehighlighter1_1000_1014_Open_Image.style.display='inline'; Codehighlighter1_1000_1014_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_1000_1014_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_1000_1014_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 创建一个二层的树。 </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            tree base </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> tree(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            p.writeObject(base); </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 将树写入流中。 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            p.writeObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LiLy is 惠止南国</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            p.flush(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ostream.close();    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 关闭文件。 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1223_1243_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1223_1243_Open_Text.style.display='none'; Codehighlighter1_1223_1243_Closed_Image.style.display='inline'; Codehighlighter1_1223_1243_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1223_1243_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1223_1243_Closed_Text.style.display='none'; Codehighlighter1_1223_1243_Open_Image.style.display='inline'; Codehighlighter1_1223_1243_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_1223_1243_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_1223_1243_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 打开文件并设置成从中读取对象。 </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            FileInputStream istream </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileInputStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tree.tmp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ObjectInputStream q </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ObjectInputStream(istream); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img id="Codehighlighter1_1398_1415_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1398_1415_Open_Text.style.display='none'; Codehighlighter1_1398_1415_Closed_Image.style.display='inline'; Codehighlighter1_1398_1415_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1398_1415_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1398_1415_Closed_Text.style.display='none'; Codehighlighter1_1398_1415_Open_Image.style.display='inline'; Codehighlighter1_1398_1415_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_1398_1415_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_1398_1415_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 读取树对象，以及所有子树 </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            tree new_tree </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (tree)q.readObject(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            new_tree.print(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 打印出树形结构的最上面 ２级 </span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            String name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (String)q.readObject();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">name);<br /><img id="Codehighlighter1_1647_1693_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1647_1693_Open_Text.style.display='none'; Codehighlighter1_1647_1693_Closed_Image.style.display='inline'; Codehighlighter1_1647_1693_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1647_1693_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1647_1693_Closed_Text.style.display='none'; Codehighlighter1_1647_1693_Open_Image.style.display='inline'; Codehighlighter1_1647_1693_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (Exception ex) </span><span id="Codehighlighter1_1647_1693_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1647_1693_Open_Text"><span style="COLOR: #000000">{ <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            ex.printStackTrace(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"> </span></div><p> </p><p>　　最后结果如下：<br /><br /><font color="#ff1493" size="2">    node 0<br />  node 1<br />node 2<br />node 3<br />  node 4<br />node 5<br />node 6</font></p><p><font color="#ff1493" size="2">LiLy is 惠止南国</font><br /><br /><font color="#000080">　<font color="#000000">　可以看到，在序列化的时候，writeObject与readObject之间的先后顺序。readObject将最先write的object read出来。用数据结构的术语来讲就姑且称之为先进先出吧！</font><br /><br />　　在序列化时，有几点要注意的：<br />　　１：当一个对象被序列化时，只保存对象的非静态成员变量，不能保存任何的成员方法和静态的成员变量。<br />　　２：如果一个对象的成员变量是一个对象，那么这个对象的数据成员也会被保存。<br />　　３：如果一个可序列化的对象包含对某个不可序列化的对象的引用，那么整个序列化操作将会失败，并且会抛出一个NotSerializableException。我们可以将这个引用标记为transient，那么对象仍然可以序列化<br /><br />　　还有我们对某个对象进行序列化时候，往往对整个对象全部序列化了，比如说类里有些数据比较敏感，不希望序列化，一个方法可以用transient来标识，另一个方法我们可以在类里重写</font></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font color="#000080"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font><font color="#000080"><span style="COLOR: #000000"> readObject(java.io.ObjectInputStream stream)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">throws</span></font><font color="#000080"><span style="COLOR: #000000"> IOException, ClassNotFoundException;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span></font><font color="#000080"><span style="COLOR: #000000"> writeObject(java.io.ObjectOutputStream stream)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />     </span><span style="COLOR: #0000ff">throws</span></font><span style="COLOR: #000000"><font color="#000080"> IOException<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font></span></div><p><font color="#000080">　　这二个方法！<br /></font>　　<font color="#000080">示例：<br /></font><br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.io.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> ObjectSerialTest<br /><img id="Codehighlighter1_42_717_Open_Image" onclick="this.style.display='none'; Codehighlighter1_42_717_Open_Text.style.display='none'; Codehighlighter1_42_717_Closed_Image.style.display='inline'; Codehighlighter1_42_717_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_42_717_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_717_Closed_Text.style.display='none'; Codehighlighter1_42_717_Open_Image.style.display='inline'; Codehighlighter1_42_717_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_42_717_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_42_717_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception<br /><img id="Codehighlighter1_102_715_Open_Image" onclick="this.style.display='none'; Codehighlighter1_102_715_Open_Text.style.display='none'; Codehighlighter1_102_715_Closed_Image.style.display='inline'; Codehighlighter1_102_715_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_102_715_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_102_715_Closed_Text.style.display='none'; Codehighlighter1_102_715_Open_Image.style.display='inline'; Codehighlighter1_102_715_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_102_715_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_102_715_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Employee e1</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Employee(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zhangsan</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3000.50</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Employee e2</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Employee(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lisi</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3200.40</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Employee e3</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Employee(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wangwu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">27</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3800.55</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        FileOutputStream fos</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileOutputStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">employee.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ObjectOutputStream oos</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ObjectOutputStream(fos);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.writeObject(e1);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.writeObject(e2);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.writeObject(e3);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        FileInputStream fis</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> FileInputStream(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">employee.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ObjectInputStream ois</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ObjectInputStream(fis);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Employee e;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_606_697_Open_Image" onclick="this.style.display='none'; Codehighlighter1_606_697_Open_Text.style.display='none'; Codehighlighter1_606_697_Closed_Image.style.display='inline'; Codehighlighter1_606_697_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_606_697_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_606_697_Closed_Text.style.display='none'; Codehighlighter1_606_697_Open_Image.style.display='inline'; Codehighlighter1_606_697_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_606_697_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_606_697_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            e</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(Employee)ois.readObject();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            System.out.println(e.name</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">e.age</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">e.salary);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ois.close();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Employee </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> Serializable<br /><img id="Codehighlighter1_759_1275_Open_Image" onclick="this.style.display='none'; Codehighlighter1_759_1275_Open_Text.style.display='none'; Codehighlighter1_759_1275_Closed_Image.style.display='inline'; Codehighlighter1_759_1275_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_759_1275_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_759_1275_Closed_Text.style.display='none'; Codehighlighter1_759_1275_Open_Image.style.display='inline'; Codehighlighter1_759_1275_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_759_1275_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_759_1275_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    String name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> age;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000"> salary;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">transient</span><span style="COLOR: #000000"> Thread t</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Thread();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Employee(String name,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> age,</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000"> salary)<br /><img id="Codehighlighter1_888_947_Open_Image" onclick="this.style.display='none'; Codehighlighter1_888_947_Open_Text.style.display='none'; Codehighlighter1_888_947_Closed_Image.style.display='inline'; Codehighlighter1_888_947_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_888_947_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_888_947_Closed_Text.style.display='none'; Codehighlighter1_888_947_Open_Image.style.display='inline'; Codehighlighter1_888_947_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_888_947_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_888_947_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.age</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">age;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.salary</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">salary;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> writeObject(java.io.ObjectOutputStream oos) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> IOException<br /><img id="Codehighlighter1_1027_1111_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1027_1111_Open_Text.style.display='none'; Codehighlighter1_1027_1111_Closed_Image.style.display='inline'; Codehighlighter1_1027_1111_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1027_1111_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1027_1111_Closed_Text.style.display='none'; Codehighlighter1_1027_1111_Open_Image.style.display='inline'; Codehighlighter1_1027_1111_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1027_1111_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1027_1111_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.writeInt(age);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        oos.writeUTF(name);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Write Object</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> readObject(java.io.ObjectInputStream ois) </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> IOException<br /><img id="Codehighlighter1_1189_1272_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1189_1272_Open_Text.style.display='none'; Codehighlighter1_1189_1272_Closed_Image.style.display='inline'; Codehighlighter1_1189_1272_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1189_1272_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1189_1272_Closed_Text.style.display='none'; Codehighlighter1_1189_1272_Open_Image.style.display='inline'; Codehighlighter1_1189_1272_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span id="Codehighlighter1_1189_1272_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1189_1272_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        age</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ois.readInt();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ois.readUTF();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Read Object</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><p><font color="#000080">　　－－(add on 2006/6/28)</font><br /> </p><p><strong><font size="4">参考资料：JDK1.5 API DOC</font> 　孙鑫老师资料</strong></p><img src ="http://www.blogjava.net/tony/aggbug/75548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/tony/" target="_blank">tony-dl</a> 2006-10-17 10:20 <a href="http://www.blogjava.net/tony/articles/75548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>