﻿<?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-漫步红林-文章分类-Corejava</title><link>http://www.blogjava.net/hyint/category/37843.html</link><description>品味技术与生活之间的差距，追求代码与国画之间的艺术.</description><language>zh-cn</language><lastBuildDate>Sun, 15 Mar 2009 21:24:46 GMT</lastBuildDate><pubDate>Sun, 15 Mar 2009 21:24:46 GMT</pubDate><ttl>60</ttl><item><title>java 争论之指针</title><link>http://www.blogjava.net/hyint/articles/258705.html</link><dc:creator>苦瓜</dc:creator><author>苦瓜</author><pubDate>Tue, 10 Mar 2009 00:55:00 GMT</pubDate><guid>http://www.blogjava.net/hyint/articles/258705.html</guid><wfw:comment>http://www.blogjava.net/hyint/comments/258705.html</wfw:comment><comments>http://www.blogjava.net/hyint/articles/258705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyint/comments/commentRss/258705.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyint/services/trackbacks/258705.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在经历了 JNI 和 JNA 的应用和摸索之后，看待 java 的方式也开始改变了，也许有许多是好的一面，但是大部分的懊恼与抱怨，还是让我感觉 JVM 的机制让人偶尔烦闷。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先我们从几个问题来说说 java .&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)、Java 有指针吗？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指针概述：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a)&nbsp;&nbsp; 指针其实指针就像是其它变量一样，所不同的是一般的变量包含的是实际的真实的数据，而指针是一个指示器，它告<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 诉程序在内存的哪块区域可以找到数据。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)&nbsp;&nbsp; 指针是一个数据类型，是一个无符号整数（unsigned int），它是一个以当前系统寻址范围为取值范围的整数。32位系<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 统下寻址能力（地址空间）是4G-byte（0~2^32-1)二进制表示长度为32bit，也就是4GB。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从上面的例子，我们可以知道，Java 似乎也存在这样的东西。没错，确切地说，Java 是有指针的。JNIEnv *env ，这个就是一个经典的指针，在 Java 本身的特性是 Java 中除了基本数据类型意外，每个对象的识别名称 ( 即：Java对象的 Reference )都是指针，但是它们的作用是受限制的，不紧受编译器的保护，也受执行期系统的保护 (执行期系统： Runtime&nbsp; System )，但是 Java 中却没有指针运算。&nbsp;<br />
Reference 可以被认为是 安全的指针。在 Java 开发时，当你传递某个对象时，其实你应该接收一个事实：你传递的其实是一个Reference.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<img src ="http://www.blogjava.net/hyint/aggbug/258705.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyint/" target="_blank">苦瓜</a> 2009-03-10 08:55 <a href="http://www.blogjava.net/hyint/articles/258705.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java IO 在Linux下报 bad file descriptor</title><link>http://www.blogjava.net/hyint/articles/256948.html</link><dc:creator>苦瓜</dc:creator><author>苦瓜</author><pubDate>Fri, 27 Feb 2009 01:10:00 GMT</pubDate><guid>http://www.blogjava.net/hyint/articles/256948.html</guid><wfw:comment>http://www.blogjava.net/hyint/comments/256948.html</wfw:comment><comments>http://www.blogjava.net/hyint/articles/256948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyint/comments/commentRss/256948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyint/services/trackbacks/256948.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天在做Java的IO写视频数据文件的时候，突然报了一个bad file descriptor，我以为是我的文件名写的不对，或者其他的操作出错了！由于函数是被c++的动态库回调的，所以我当初把错误归为c++报错，当我检查以后，发现，IO 才刚执行就关闭了流，导致报错。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以相当于此异常的代码如下</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"><span style="color: #008080">&nbsp;1</span><img id="Codehighlighter1_28_345_Open_Image" onclick="this.style.display='none'; Codehighlighter1_28_345_Open_Text.style.display='none'; Codehighlighter1_28_345_Closed_Image.style.display='inline'; Codehighlighter1_28_345_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_28_345_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_28_345_Closed_Text.style.display='none'; Codehighlighter1_28_345_Open_Image.style.display='inline'; Codehighlighter1_28_345_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;&nbsp;TestBadFileDes</span><span id="Codehighlighter1_28_345_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"  alt="" /></span><span id="Codehighlighter1_28_345_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_69_342_Open_Image" onclick="this.style.display='none'; Codehighlighter1_69_342_Open_Text.style.display='none'; Codehighlighter1_69_342_Closed_Image.style.display='inline'; Codehighlighter1_69_342_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_69_342_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_69_342_Closed_Text.style.display='none'; Codehighlighter1_69_342_Open_Image.style.display='inline'; Codehighlighter1_69_342_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;main(String[]&nbsp;args)</span><span id="Codehighlighter1_69_342_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"  alt="" /></span><span id="Codehighlighter1_69_342_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />FileOutputStream&nbsp;fos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;;&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_106_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_106_160_Open_Text.style.display='none'; Codehighlighter1_106_160_Closed_Image.style.display='inline'; Codehighlighter1_106_160_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_106_160_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_106_160_Closed_Text.style.display='none'; Codehighlighter1_106_160_Open_Image.style.display='inline'; Codehighlighter1_106_160_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span id="Codehighlighter1_106_160_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"  alt="" /></span><span id="Codehighlighter1_106_160_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fos&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileOutputStream(</span><span style="color: #000000">"</span><span style="color: #000000">F:\\javatest.txt</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_193_220_Open_Image" onclick="this.style.display='none'; Codehighlighter1_193_220_Open_Text.style.display='none'; Codehighlighter1_193_220_Closed_Image.style.display='inline'; Codehighlighter1_193_220_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_193_220_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_193_220_Closed_Text.style.display='none'; Codehighlighter1_193_220_Open_Image.style.display='inline'; Codehighlighter1_193_220_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(FileNotFoundException&nbsp;fnf)</span><span id="Codehighlighter1_193_220_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"  alt="" /></span><span id="Codehighlighter1_193_220_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fnf.printStackTrace();&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_248_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_248_339_Open_Text.style.display='none'; Codehighlighter1_248_339_Closed_Image.style.display='inline'; Codehighlighter1_248_339_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_248_339_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_248_339_Closed_Text.style.display='none'; Codehighlighter1_248_339_Open_Image.style.display='inline'; Codehighlighter1_248_339_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=0 </span><span style="color: #000000">;i&nbsp;</span><span style="color: #000000">&lt;100</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span id="Codehighlighter1_248_339_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"  alt="" /></span><span id="Codehighlighter1_248_339_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_254_286_Open_Image" onclick="this.style.display='none'; Codehighlighter1_254_286_Open_Text.style.display='none'; Codehighlighter1_254_286_Closed_Image.style.display='inline'; Codehighlighter1_254_286_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_254_286_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_254_286_Closed_Text.style.display='none'; Codehighlighter1_254_286_Open_Image.style.display='inline'; Codehighlighter1_254_286_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span id="Codehighlighter1_254_286_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"  alt="" /></span><span id="Codehighlighter1_254_286_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fos.write(i);&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />fos.close();&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_309_336_Open_Image" onclick="this.style.display='none'; Codehighlighter1_309_336_Open_Text.style.display='none'; Codehighlighter1_309_336_Closed_Image.style.display='inline'; Codehighlighter1_309_336_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_309_336_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_309_336_Closed_Text.style.display='none'; Codehighlighter1_309_336_Open_Image.style.display='inline'; Codehighlighter1_309_336_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" />}</span></span><span style="color: #0000ff">catch</span><span style="color: #000000">(IOException&nbsp;ioe)</span><span id="Codehighlighter1_309_336_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"  alt="" /></span><span id="Codehighlighter1_309_336_Open_Text"><span style="color: #000000">{&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />ioe.printStackTrace();&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
异常如下：<br />
<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"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">java&nbsp;TestBadFileDes<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">41</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">42</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">43</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">44</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">45</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">46</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">47</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">48</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">49</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">50</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">51</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">52</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">53</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">54</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">55</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">56</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">57</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">58</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">59</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">60</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">61</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">62</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">63</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">64</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">65</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">66</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">67</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">68</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">69</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">70</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">71</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />java.io.IOException:&nbsp;Bad&nbsp;file&nbsp;descriptor&nbsp;<br />
</span><span style="color: #008080">72</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.io.FileOutputStream.write(Native&nbsp;Method)&nbsp;<br />
</span><span style="color: #008080">73</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;FileTest.main(TestBadFileDes.java:</span><span style="color: #000000">38</span><span style="color: #000000">)&nbsp;<br />
</span><span style="color: #008080">74</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
把close改成 flush.在流使用完毕后再close掉！问题解决
<img src ="http://www.blogjava.net/hyint/aggbug/256948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyint/" target="_blank">苦瓜</a> 2009-02-27 09:10 <a href="http://www.blogjava.net/hyint/articles/256948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>不同的Object在不同层面上的应用</title><link>http://www.blogjava.net/hyint/articles/256077.html</link><dc:creator>苦瓜</dc:creator><author>苦瓜</author><pubDate>Sun, 22 Feb 2009 11:00:00 GMT</pubDate><guid>http://www.blogjava.net/hyint/articles/256077.html</guid><wfw:comment>http://www.blogjava.net/hyint/comments/256077.html</wfw:comment><comments>http://www.blogjava.net/hyint/articles/256077.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyint/comments/commentRss/256077.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyint/services/trackbacks/256077.html</trackback:ping><description><![CDATA[<p><span style="font-size: 18pt; color: red; font-family: 宋体"><strong><span style="font-size: 12pt; font-family: 宋体">1</span><span style="font-size: 12pt; font-family: 宋体">、PO:persistant object</span></strong></span></p>
<p style="background: white; text-indent: 24pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录，多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作. 最形象的理解就是一个PO就是数据库中的一条记录。好处是可以把一条记录作为一个对象处理，可以方便的转为其它对象。<br />
<br />
</span></p>
<p style="background: white; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体"><span style="color: red"><strong style="font-size: 18pt"><span style="font-size: 12pt; font-family: 宋体">2</span><span style="font-size: 12pt; font-family: 宋体">、VO。</span></strong></span></span></p>
<p style="background: white; text-indent: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">2.1 value object</span><span style="font-size: 12pt; font-family: 宋体">值对象。</span></p>
<p style="background: white; text-indent: 24pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">通常用于业务层之间的数据传递，和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递.<br />
&nbsp;&nbsp;&nbsp; 2.2 View Object表现层对象：主要对应界面显示的数据对象。对于一个WEB页面，或者SWT、SWING的一个界面，用一个VO对象对应整个界面的值。<br />
<br />
</span></p>
<p style="background: white; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体"><span style="font-size: 18pt; color: red"><strong><span style="font-size: 12pt; font-family: 宋体">3</span><span style="font-size: 12pt; font-family: 宋体">、DAO</span></strong></span></span><span style="font-size: 12pt; font-family: 宋体"><span style="font-size: 18pt"><span style="font-family: 宋体"><strong style="color: red">:data access object</strong></span></span>数据访问对象，此对象用于访问数据库。</span></p>
<p style="background: white; text-indent: 24pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">通常和PO结合使用，DAO中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作. 通过它可以把POJO持久化为PO，用PO组装出来VO、DTO<br />
<br />
</span></p>
<p style="background: white; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体"><span style="color: red"><strong><span style="font-size: 12pt; font-family: 宋体">4</span><span style="font-size: 12pt; font-family: 宋体">、BO:business object</span></strong></span></span><span style="font-size: 12pt; font-family: 宋体">业务对象。</span></p>
<p style="background: white; text-indent: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体">封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作; 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。</span></p>
<p style="background: white; text-indent: 18pt; text-align: left" align="left"><span style="font-size: 12pt; font-family: 宋体"><br />
<span style="font-size: 18pt; color: red"><strong style="font-size: 18pt; font-family: 宋体"><span style="font-size: 12pt; font-family: 宋体"><span style="font-size: 18pt"><span style="color: red"><strong style="font-family: 宋体"><span style="font-family: 宋体">5</span><span style="font-family: 宋体">、POJO:</span></strong></span></span></span><span style="font-size: 12pt; font-family: 宋体"><span style="font-size: 18pt">pure old java object or plain ordinary java object.</span></span></strong></span></span><span style="font-size: 12pt; font-family: 宋体">古老的Java对象。我个人觉得它和其他不是一个层面上的东西,VO和PO应该都属于它.比如一个简历，有教育经历、工作经历、社会关系等等。<br />
&nbsp;&nbsp;&nbsp; 我们可以把教育经历对应一个PO，工作经历对应一个PO，社会 关系对应一个PO。建立一个对应简历的BO对象处理简历，每个BO包含这些PO。<br />
这样处理业务逻辑时，我们就可以针对BO去处理。<br />
<br />
<span style="font-size: 18pt; color: red"><strong style="font-size: 14pt; font-family: 宋体">6、DTO:Data Transfer Object</strong></span>数据传输对象<br />
&nbsp;&nbsp;&nbsp;&nbsp; 主要用于远程调用等需要大量传输对象的地方。比如我们一张表有100个字段，那么对应的PO就有100个属性。但是我们界面上只要显示10个字段，客户端用WEB service来获取数据，没有必要把整个PO对象传递到客户端，<br />
这时我们就可以用只有这10个属性的DTO来传递结果到客户端，这样也不会暴露服务端表结构.到达客户端以后，如果用这个对象来对应界面显示，那此时它的身份就转为VO</span></p>
<p style="background: white; text-indent: 18pt; text-align: left" align="left">&nbsp;<span style="font-size: 12pt; font-family: 宋体">总结下我认为一个对象究竟是什么O要看具体环境，在不同的层、不同的应用场合，对象的身份也不一样，而且对象身份的转化也是很自然的。设计这些概念的初衷不是为了唬人而是为了更好的理解和处理各种逻辑，让大家能更好的去用面向对象的方式处理问题. </span></p>
<img src ="http://www.blogjava.net/hyint/aggbug/256077.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyint/" target="_blank">苦瓜</a> 2009-02-22 19:00 <a href="http://www.blogjava.net/hyint/articles/256077.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>