﻿<?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-gps梦想</title><link>http://www.blogjava.net/bzbaifan/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 09:37:30 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 09:37:30 GMT</pubDate><ttl>60</ttl><item><title>Java Web项目调试</title><link>http://www.blogjava.net/bzbaifan/archive/2013/11/12/406275.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Tue, 12 Nov 2013 15:30:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2013/11/12/406275.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/406275.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2013/11/12/406275.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/406275.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/406275.html</trackback:ping><description><![CDATA[
 
<div class="cnt-text clearfix"><div class="text-img-wraper hide">工作中会带一些实习生或新人，大多缺乏经验，项目调试是他们很头疼的问题，代码出了问题往往就束手无策了，很影响工作效率。其实代码调试是有步骤可循的，代码出了问题要做的第一件事情是定位问题，只有知道问题出在哪才能解决。</div><p>一个Java Web项目通常是由前端和后端组成的，请求是由前端发送给后台代码处理的，所以我们要做的第一件事情就是确定问题出在前端还是后端，先要保证前端发送给后端的请求参数是对的，有些同学在请求参数不对或者请求根本没有到达后台的情况下盲目地去检查后台代码是不对的。</p><br /><p>前台请求通常通过form、超链接或ajax等方法提交给后台，我们必须确定提交的链接是对的，然后是参数，提交的参数我们可以通过浏览器地址或者一些浏览器调试工具（例如火狐的firebug）得到。</p><br /><p>如果请求链接是对的、参数也是对的，那就是后台的问题了，后台问题通常通过eclipse的debug工作调试，但有一种情况，就是开发中会运用一些mvc框架，例如struts2、spring <br />mvc等，我们在后台某个地方加断点根本就没反应，这时候有个很简单的方法，把断点加到control层的代码入口处，如果还没反应，那就是框架配置问题了，要检查配置对不对。</p><div class="text-number hide">&nbsp;</div></div><img src ="http://www.blogjava.net/bzbaifan/aggbug/406275.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2013-11-12 23:30 <a href="http://www.blogjava.net/bzbaifan/archive/2013/11/12/406275.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅析JAVA面向对象思想</title><link>http://www.blogjava.net/bzbaifan/archive/2012/09/15/387768.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Sat, 15 Sep 2012 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2012/09/15/387768.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/387768.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2012/09/15/387768.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/387768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/387768.html</trackback:ping><description><![CDATA[<p style="text-indent:21.0pt"><span style="font-size:12.0pt; font-family:宋体;">对象，你可以理解成一种具有属性和行为的实体，它可向外部提供服务。而使用这个对象，可忽略其内部的细节，只需要知道使用这种服务时的&#8220;投入&#8221;、&#8220;产出&#8221;即可，因此，&#8220;高内聚、低耦合&#8221;是面向对象编程的基本思想。</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt; font-family:宋体;">略举一例，平时我们工作中要删除某条数据，一般不是真的</span><span style="font-size:12.0pt">delete</span><span style="font-size:12.0pt; font-family:宋体;">掉，而是用一个</span><span style="font-size:12.0pt">status</span><span style="font-size:12.0pt; font-family:宋体;">标识，</span><span style="font-size:12.0pt">status</span><span style="font-size:12.0pt; font-family:宋体;">为</span><span style="font-size:12.0pt">-1</span><span style="font-size:12.0pt; font-family:宋体;">表示删除，你写删除接口时完全可以这么写：</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">Class UserService{</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private UserDao userDao;</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void deleteUser(User user){</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user.setStatus(-1);</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userDao.update(user);</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt"><span style="font-size:12.0pt">}</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">} </span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:12.0pt; font-family:宋体;">这个逻辑其实执行的是更新操作，但接口名仍是</span><span style="font-size:12.0pt">deleteUser</span><span style="font-size: 12.0pt;font-family:宋体;">，因为它提供的确实是删除&#8220;服务&#8221;，调用接口时我只需要知道我调用这个接口时会删除对象，至于它怎么实现，我管不着。</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Java</span><span style="font-size:12.0pt; font-family:宋体;">中到处是指针引用，习惯了使用</span><span style="font-size:12.0pt">c</span><span style="font-size:12.0pt; font-family:宋体;">语言指针的程序员往往会乱用指针，而破坏了面向对象的思想，比如，我要查询某个用户的密码，有人可能会这么写：</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class UserService{</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private UserDao userDao;</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void queryUserPasswd(int id,User user){</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String passwd=userdao.getUserPasswd(id)</span></p>  <p style="margin-left:63.0pt;text-indent:21.0pt"><span style="font-size:12.0pt">User.setPasswd(passwd);</span></p>  <p style="margin-left:42.0pt;text-indent:21.0pt"><span style="font-size:12.0pt">}</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt"><span style="font-size:12.0pt">} </span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:12.0pt; font-family:宋体;">这种写法在语法上没什么问题，也能得到正确的值，但传个</span><span style="font-size:12.0pt">user</span><span style="font-size:12.0pt; font-family:宋体;">对象进来就有些不妥了，我要得到密码，传个用户的密码，只要给个</span><span style="font-size:12.0pt">id</span><span style="font-size:12.0pt; font-family:宋体;">就可以把密码返回给调用者了，干嘛要让人再传个对象进来？</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size:12.0pt; font-family:宋体;">作为一个项目经理，在工作过程中，确实会遇到令人哭笑不得的接口，就像上面那个删除接口吧，有人会这么写：</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">Class UserService{</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void deleteUser(UserDao userDao ,User user){</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user.setStatus(-1);</span></p>  <p><span style="font-size:12.0pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; userDao.update(user);</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt"><span style="font-size:12.0pt">}</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">} </span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt; font-family:宋体;">这接口写得，让人摸不着头脑了，我删除一个</span><span style="font-size:12.0pt">user</span><span style="font-size:12.0pt; font-family:宋体;">对象，还要传个</span><span style="font-size:12.0pt">userDao</span><span style="font-size:12.0pt; font-family:宋体;">给你，意思是你为我提供服务，我还要给个工具给你，这说不通吧！</span></p>  <p style="text-indent:21.0pt"><span style="font-size:12.0pt">Java</span><span style="font-size:12.0pt;font-family: 宋体;">是纯粹的面向对象语言，写</span><span style="font-size:12.0pt">Java</span><span style="font-size:12.0pt; font-family:宋体;">程序时要时刻记住，你在为别人提供服务，为别人提供服务就不应该提出过多的附加要求。这个问题在使用</span><span style="font-size:12.0pt">MVC</span><span style="font-size:12.0pt; font-family:宋体;">模式分层思想的时候体现得更加严重。在使用</span><span style="font-size:12.0pt">MVC</span><span style="font-size:12.0pt; font-family:宋体;">模式开发的时候，往往将整个项目分成几层：</span><span style="font-size:12.0pt">action</span><span style="font-size:12.0pt; font-family:宋体;">层、</span><span style="font-size:12.0pt">service</span><span style="font-size:12.0pt; font-family:宋体;">层、数据库处理层（</span><span style="font-size:12.0pt">dao</span><span style="font-size:12.0pt; font-family:宋体;">层）等等，每一层往往由不同的程序员编写，这时候要格外提醒自己在为别人提供服务。在一个新项目开始的时候往往会出现一个问题：在增加某条数据时，要对这条数据的字段进行验证，不能为空或者长度过长等等，如果没有验证容易抛错，在分层编写接口时，开发人员经常想这个验证应该在上层或者下层做吧，我这边得到的数据是正确的，最后导致谁都没做验证。只要你记住了提供&#8220;服务&#8221;的思想，就不应该要求别人给你的数据是正确的，而是应该处理各种非正常问题，保证用户给你的任何数据你都能给出相应的返回，当然，在实际的项目中项目经理可能规定数据验证在</span><span style="font-size:12.0pt">service</span><span style="font-size:12.0pt; font-family:宋体;">层做。</span></p><img src ="http://www.blogjava.net/bzbaifan/aggbug/387768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2012-09-15 11:06 <a href="http://www.blogjava.net/bzbaifan/archive/2012/09/15/387768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android Adapter详解</title><link>http://www.blogjava.net/bzbaifan/archive/2012/07/06/382348.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Fri, 06 Jul 2012 03:19:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2012/07/06/382348.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/382348.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2012/07/06/382348.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/382348.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/382348.html</trackback:ping><description><![CDATA[<div>  <p style="text-indent:21.0pt">Android Adapter <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">是将数据绑定到</span>UI <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">界面上的桥接类。</span> Adapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">负责创建和显示每个项目的子</span>View<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">和提供对下层数据的访问。支持</span>Adapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">绑定的</span>UI<span style="font-family: 宋体;Times New Roman&quot;;Times New Roman&quot;">控件必须扩展</span>Adapter View<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">抽象类。创建自己的继承自</span>AdapterView<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">的控件和创建新的</span>Adapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">类来绑定它们是可能的。</span></p>  <p style="text-indent:21.0pt">Android <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">系统本身提供了两种现成的</span>Adapter <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">供我们使用。</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt;"><span style="Times New Roman&quot;">1.</span>ArrayAdapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：它是一个绑定</span>View<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">到一组对象的通用类。默认情况下，</span>ArrayAdapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">绑定每个对象的</span>toString<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">值到</span>layout<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">中预先定义的</span>TextView<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">空间上。构造函数允许用户使用更加复杂的</span>Layout<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">或者通过重写</span>getView<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">方法来扩展类从而使用</span>TextView<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">的替代物</span></p>  <p style="margin-left:21.0pt;text-indent:21.0pt;"><span style="Times New Roman&quot;">2.</span>SimpleCursorAdapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">：它绑定</span>View<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">到</span>Content Provider <span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">查询返回的游标上。指定一个</span>XML layout<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">定义，然后将数据集的每一列的值绑定到</span>layout<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">中的一个</span>View</p>  <p style="margin-left:42.0pt">&nbsp;</p>  <p style="text-indent:21.0pt"><span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">写自己的</span>Adapter<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">类实现更多复杂的</span>UI<span style="font-family:宋体;Times New Roman&quot;;Times New Roman&quot;">界面和数据绑定</span></p>&nbsp;&nbsp;&nbsp; <br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&nbsp;MyAdapter&nbsp;</span><span style="color: #0000FF; ">extends</span><span style="color: #000000; ">&nbsp;SimpleAdapter&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;LayoutInflater&nbsp;mInflater;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;Context&nbsp;context;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Map</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,Object</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">&nbsp;list;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;resource;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;String[]&nbsp;tags;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;ids;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;MyAdapter(Context&nbsp;context,&nbsp;List</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Map</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">String,Object</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">&nbsp;items,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;resource,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;tags,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">[]&nbsp;ids)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">(context,&nbsp;items,&nbsp;resource,&nbsp;tags,&nbsp;ids);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.mInflater&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;LayoutInflater.from(context);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.context&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;context;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.list&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;items;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.resource&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;resource;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.tags&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tags;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">this</span><span style="color: #000000; ">.ids&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ids;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;getCount()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;list.size();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;Object&nbsp;getItem(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;list.get(position);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;getItemId(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;position;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;View&nbsp;getView(</span><span style="color: #0000FF; ">final</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;position,&nbsp;View&nbsp;convertView,&nbsp;ViewGroup&nbsp;parent)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;convertView&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">super</span><span style="color: #000000; ">.getView(position,&nbsp;convertView,&nbsp;parent);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(convertView&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;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toast.makeText(context,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">this&nbsp;is&nbsp;null</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">2000</span><span style="color: #000000; ">).show();&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{&nbsp;&nbsp;&nbsp;<br />&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;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageView&nbsp;more&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(ImageView)&nbsp;convertView.findViewById(R.id.iv_more);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;more.setOnClickListener(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;View.OnClickListener()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;onClick(View&nbsp;arg0)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Intent&nbsp;intent&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;Intent(context,&nbsp;VehicleInfoActivity.</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intent.putExtra(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">vehicleID</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;VehicleListActivity.idList.get(position));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;intent.putExtra(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">CameraID</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">0</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Toast.makeText(context,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">sssssss</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">2000</span><span style="color: #000000;">).show();&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;context.startActivity(intent);<br />&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;<br />&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;});<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000;">&nbsp;convertView;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span></div><p style="text-indent:21.0pt"><span style="font-size:12.0pt;font-family:宋体;color:black">主要重载</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">getCount </span><span style="font-size:12.0pt;font-family:宋体;color:black">方法，</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">getView</span><span style="font-size:12.0pt;font-family:宋体;color:black">方法</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black"> getItem</span><span style="font-size:12.0pt;font-family:宋体;color:black">方法</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black"> getItemId</span><span style="font-size:12.0pt;font-family:宋体;color:black">方法；</span> <span style="font-size:12.0pt;font-family:宋体;color:black">参数解析：</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">context</span><span style="font-size:12.0pt;font-family:宋体;color:black">：传入的上下文</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">Activity</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">, items</span> <span style="font-size:12.0pt;font-family:宋体;color:black">绑定数据的列表</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">, resource</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black"> layout</span><span style="font-size:12.0pt;font-family:宋体;color:black">布局</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">ID</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">, tags</span> <span style="font-size:12.0pt;font-family:宋体;color:black">绑定数据的</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">key</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">, ids</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black"> Item </span><span style="font-size:12.0pt;font-family: 宋体;color:black">中对应</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">key</span><span style="font-size:12.0pt;font-family:宋体;color:black">的资源</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">ID</span><span style="font-size:12.0pt;font-family:宋体;color:black">。</span> <span style="font-size:12.0pt;font-family:宋体;color:black">在</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">getView</span><span style="font-size:12.0pt;font-family:宋体;color:black">中自定义</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black">Item</span><span style="font-size:12.0pt;font-family:宋体;color:black">里面的事件监听，自定义新的重载后的显示界面返回</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;;color:black"> convertView</span><span style="font-size:12.0pt;font-family:宋体;color:black">。</span> <span style="font-size:12.0pt;font-family:宋体;color:black">如果需要使用到父类</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">SimpleAdapter</span> <span style="font-size:12.0pt; font-family:宋体; color:black">显示效果需要调用</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black">super.getView</span><span style="font-size:12.0pt;font-family:宋体;color:black">方法为</span><span style="font-size:12.0pt;font-family:Consolas;Times New Roman&quot;; color:black"> convertView </span><span style="font-size:12.0pt;font-family:宋体;color:black">赋值。</span></p>  </div><img src ="http://www.blogjava.net/bzbaifan/aggbug/382348.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2012-07-06 11:19 <a href="http://www.blogjava.net/bzbaifan/archive/2012/07/06/382348.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA中==与equals()用法的区别</title><link>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378176.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Tue, 15 May 2012 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378176.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/378176.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/378176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/378176.html</trackback:ping><description><![CDATA[
 
<p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>在java中"=="是用来比较两者储存值的地址是否相同，比如A==B，就是比较A和B所储存值的地址是否相同。</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>再来看看equals()的使用&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>在java中有这两种情况存在：</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1、使用object类中的equals()方法，这个是java中最初的equals()方法</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果你自定义一个类A，并且没有去继承其他的类，这时A中的equals()</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;的功能就是比较两者储存值的地址是否相同。因为所有的类都继承object</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类，而object类中有equals()这样的方法</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object类中的equals()方法的源代码如下：</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;boolean&nbsp;equals(object&nbsp;obj)</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;this&nbsp;==&nbsp;obj;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从这段代码中，我们可以再次确定，这种情况下的equals()方法的功能是</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比较两者储存值的地址。</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、自定义一个类B，但B类继承了c类，而c类中的equals()方法已经被重写过</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;了，这种情形就需要具体情况具体分析了，但大部分被重写的equals()方</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;法所拥有的功能就是比较两者储存值的内容是否相同，而不再是比较地址</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;了。比如：创建一个String对象&nbsp;&nbsp;String&nbsp;str1&nbsp;=&nbsp;new&nbsp;String("1");</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;str2&nbsp;=&nbsp;new&nbsp;String("1");&nbsp;&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这时str1.equals(str2)比较的就是str1和str2中储存值的内容是否相同&nbsp;</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;了，因为String类中的equals()就被重写了，但这并不意味着所有被重写</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;过的equals()方法都是用来比较内容的(因为目前我所遇到的只有这种情</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;况，如果大家有兴趣可以去多研究研究</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><p style="margin-top: 0pt; margin-bottom: 0pt;" class="p16"><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'>总结:"=="就只有一种用法，而equals()有两种用法，只是所使用的环境不一样而已。</span><span style='font-family: "宋体"; font-size: 10.5pt; mso-spacerun: "yes";'><o:p></o:p></span></p><!--EndFragment--><img src ="http://www.blogjava.net/bzbaifan/aggbug/378176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2012-05-15 11:56 <a href="http://www.blogjava.net/bzbaifan/archive/2012/05/15/378176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WARN com.opensymphony.xwork2.ognl.OgnlValueStack异常的解决办法</title><link>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378175.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Tue, 15 May 2012 03:54:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378175.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/378175.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378175.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/378175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/378175.html</trackback:ping><description><![CDATA[
 
<p><span>WARN&nbsp;com.opensymphony.xwork2.ognl.OgnlValueStack:60&nbsp;-&nbsp;Error&nbsp;setting&nbsp;expression&nbsp;'</span><span>ssc</span><span>.x'&nbsp;with&nbsp;value&nbsp;'[Ljava.lang.String;@28d320d6'</span><span></span></p><p><span>ognl.OgnlException</span><span>:&nbsp;target&nbsp;is&nbsp;null&nbsp;for&nbsp;setProperty(null,&nbsp;"x",&nbsp;[Ljava.lang.String;@28d320d6)</span><span></span></p><p><span>ognl.OgnlException</span><span>:&nbsp;target&nbsp;is&nbsp;null&nbsp;for&nbsp;setProperty(null,&nbsp;"y",&nbsp;[Ljava.lang.String;@32a88bc2)</span><span>&nbsp;</span><span></span></p><p><span>的解决办法</span><span></span></p><p><span></span></p><p><span>Struts2<br />这个异常是在提交表单的时候发生的，乍一看以为是Struts2类型转换的错误，但是程序中又压根儿没有用到Struts2的类型转换，而且前台页面<br />index.jsp中也没有设置x,y这些参数；且这个错误并不会影响程序的正常运行，找了很久，最后发现是提交按钮的缘故，提交按钮引用的是一个图片，<br />如下：</span><span></span></p><p><span>&lt;input</span><span>&nbsp;</span><span>id="submit"</span><span>&nbsp;</span><span>type="image"</span><span>&nbsp;</span><span>name="</span><span>ssc</span><span>"&nbsp;src="asserts/images/5.jpg"</span><span>/</span><span>&gt;</span><span></span></p><p><span>由于表单提交中设置了name属性，所以struts2会进行接收相应的值，查找它的set&nbsp;和&nbsp;get方法，而action里面没有这个name值的，所以才出现了如上错误。可以这样写：</span><span></span></p><p><span>&lt;input</span><span>&nbsp;</span><span>id="submit"</span><span>&nbsp;</span><span>type="image"</span><span>&nbsp;</span><span>&nbsp;src="asserts/images/5.jpg"</span><span>&nbsp;/</span><span>&gt;</span><span></span></p><p><span>将name属性去掉即可。</span><span></span></p><p><span></span></p><p><span>其实，在struts.xml文件里可以配置"struts.devMode"属性。</span><span></span></p><p><span>当<br />struts.devMode&nbsp;=&nbsp;true时，使用struts在默认配置下对任何提交到action的参数强制需要setter方法，html表单数<br />据中有和action属性匹配不上的参数名时就会提示这样的信息。所以，在开发过程中将这个属性设为true还是很好的，它可以帮我们发现一些可能出现但<br />又被我们忽视的问题，犯的&#8220;错误&#8221;越多，才能积累很多的经验。<br /><br />转自百度空间：</p></span><a href="http://hi.baidu.com/gpsdreamer/item/544050ed0e00e4d0e1a5d4cd">http://hi.baidu.com/gpsdreamer/item/544050ed0e00e4d0e1a5d4cd</a> 
<img src ="http://www.blogjava.net/bzbaifan/aggbug/378175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2012-05-15 11:54 <a href="http://www.blogjava.net/bzbaifan/archive/2012/05/15/378175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中使用ibatis完整分析</title><link>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378173.html</link><dc:creator>gps梦想</dc:creator><author>gps梦想</author><pubDate>Tue, 15 May 2012 03:52:00 GMT</pubDate><guid>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378173.html</guid><wfw:comment>http://www.blogjava.net/bzbaifan/comments/378173.html</wfw:comment><comments>http://www.blogjava.net/bzbaifan/archive/2012/05/15/378173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/bzbaifan/comments/commentRss/378173.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/bzbaifan/services/trackbacks/378173.html</trackback:ping><description><![CDATA[
 
<p><span>1.&nbsp;</span><span>首先看Spring中beans的配置：</span><span></span></p><p><span>1）&nbsp;</span><span>&lt;bean</span><span>&nbsp;i</span><span>d="dataSource"&nbsp;class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close"&gt;</span><span></span></p><p><span>第一个bean作为配置连接数据库，设置DriverManager以及用户名密码</span><span></span></p><p><span>2）&nbsp;</span><span>&lt;bean&nbsp;id="sqlMapClient"&nbsp;class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"&gt;</span><span></span></p><p><span>第二个bean就是选择</span><span>SqlMapClient</span><span>，并且填写该xml的路径：</span><span></span></p><p><span>XmlSqlMapClientBuilder&nbsp;xmlBuilder&nbsp;=</span><span></span><span>new&nbsp;</span><span>XmlSqlMapClientBuilder();</span><span></span></p><p><span>SqlMapClient&nbsp;sqlMap&nbsp;=&nbsp;xmlBuilder.buildSqlMap(reader);</span><span></span></p><p><span></span></p><p><span>3）&nbsp;</span><span>&lt;bean&nbsp;id="sqlMapClientTemplate"&nbsp;class="org.springframework.orm.ibatis.SqlMapClientTemplate"&gt;</span><span></span></p><p><span>&lt;property&nbsp;name="sqlMapClient"&gt;</span><span></span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;ref&nbsp;bean="sqlMapClient"&nbsp;/&gt;</span><span></span></p><p><span>&nbsp;&lt;/property&gt;</span><span></span></p><p><span>&nbsp;&lt;/bean&gt;</span><span></span></p><p><span>第三个bean，</span><span>SqlMapClientTemplate是SqlMapClient的封装类.</span><span><br /></span><span>SqlMapClient中包含着session的管理.</span><span><br /></span><span>SqlMapClientTemplate用于session的封装,以及异常的捕捉.</span><span><br /></span><span>所以按照以上的推断来说.应该尽量使用SqlMapClientTemplate.</span><span><br /></span><span>保证session以及Exception的正常以及统一.</span><span></span></p><p><span>2.&nbsp;</span><span>然后就是</span><span>SqlMapClient</span><span>的配置：</span><span></span></p><p><span>&lt;sqlMap&nbsp;resource="sql/gpsData_sqlmap_mapping.xml"/&gt;</span><span></span></p><p><span>配置gpsData类与数据库的对应关系</span><span></span></p><p><span>3.&nbsp;</span><span>这两个xml文件配置好以后就可以在自己的DAO类中写相应的增删改查方法了。</span><span></span></p><p><span>public&nbsp;class&nbsp;IbatisGpsDataDao&nbsp;extends&nbsp;BaseDao&nbsp;implements&nbsp;GpsDataDao</span><span>{</span><span></span></p><p><span>&#8230;</span><span></span></p><p><span>}</span><span></span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;该类集成了BaseDao类，BaseDao提供了</span><span>SqlMapClientTemplate</span><span>的对象操作，该对象正是在Spring&nbsp;beans中配置的。通过获得这个</span><span>SqlMapClientTemplate</span><span>，进行增删改查的操作。</span><span></span></p><p><span>例如下面的insert方法：</span><span></span></p><p><span>public&nbsp;long&nbsp;insertGpsDataDo(GpsDataDo&nbsp;gpsdata)&nbsp;{</span><span></span></p><p><span></span><span></span><span>if(gpsdata&nbsp;==&nbsp;null){</span><span></span></p><p><span></span><span></span><span></span><span>throw&nbsp;new&nbsp;IllegalArgumentException();</span><span></span></p><p><span></span><span></span><span>}</span><span></span></p><p><span></span><span></span><span>return&nbsp;(Long)&nbsp;getSqlMapClientTemplate().insert("GpsData.insertGpsData",gpsdata);</span><span></span></p><p><span></span><span>}</span></p><img src ="http://www.blogjava.net/bzbaifan/aggbug/378173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/bzbaifan/" target="_blank">gps梦想</a> 2012-05-15 11:52 <a href="http://www.blogjava.net/bzbaifan/archive/2012/05/15/378173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>