﻿<?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-千里之行始于足下</title><link>http://www.blogjava.net/zhouxianglh/</link><description>行运流水,做一个有趣的人.</description><language>zh-cn</language><lastBuildDate>Wed, 27 May 2026 06:28:17 GMT</lastBuildDate><pubDate>Wed, 27 May 2026 06:28:17 GMT</pubDate><ttl>60</ttl><item><title>千里之行始于足下</title><link>http://www.blogjava.net/zhouxianglh/articles/386619.html</link><dc:creator>胖子胖子</dc:creator><author>胖子胖子</author><pubDate>Thu, 30 Aug 2012 10:11:00 GMT</pubDate><guid>http://www.blogjava.net/zhouxianglh/articles/386619.html</guid><wfw:comment>http://www.blogjava.net/zhouxianglh/comments/386619.html</wfw:comment><comments>http://www.blogjava.net/zhouxianglh/articles/386619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zhouxianglh/comments/commentRss/386619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zhouxianglh/services/trackbacks/386619.html</trackback:ping><description><![CDATA[最近两天闲下来了.心情有些不好.感觉现在跟当时所谓的理想越走越远.<br />
<br />
千里之行始于足下,那就从现在开始吧.<br />
<br />
今天看了一些<span style="color: #999999; ">commons-lang3-3.1</span>的代码.正好最近在看&lt;&lt;代码大全&gt;&gt;,就总结一下吧.<br />
<br />
拿org.apache.commons.lang3.ArrayUtils来说事吧.方法里面每个方法代码都不多,代码本身功能不复杂是一方面.防御式编程方面做的好,很多情况都考滤到了.<br />
<br />
但也有些地方不明白如:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; ">&nbsp;1</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;Character&nbsp;array&nbsp;converters<br /></span><span style="color: #008080; ">&nbsp;2</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;----------------------------------------------------------------------</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;3</span>&nbsp;<span style="color: #008000; "></span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br /></span><span style="color: #008080; ">&nbsp;4</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;Converts&nbsp;an&nbsp;array&nbsp;of&nbsp;object&nbsp;Characters&nbsp;to&nbsp;primitives.&lt;/p&gt;<br /></span><span style="color: #008080; ">&nbsp;5</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br /></span><span style="color: #008080; ">&nbsp;6</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;This&nbsp;method&nbsp;returns&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;null}&nbsp;for&nbsp;a&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;null}&nbsp;input&nbsp;array.&lt;/p&gt;<br /></span><span style="color: #008080; ">&nbsp;7</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*<br /></span><span style="color: #008080; ">&nbsp;8</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;array&nbsp;&nbsp;a&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;Character}&nbsp;array,&nbsp;may&nbsp;be&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;null}<br /></span><span style="color: #008080; ">&nbsp;9</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; ">&nbsp;a&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;char}&nbsp;array,&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;null}&nbsp;if&nbsp;null&nbsp;array&nbsp;input<br /></span><span style="color: #008080; ">10</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@throws</span><span style="color: #008000; ">&nbsp;NullPointerException&nbsp;if&nbsp;array&nbsp;content&nbsp;is&nbsp;{</span><span style="color: #808080; ">@code</span><span style="color: #008000; ">&nbsp;null}<br /></span><span style="color: #008080; ">11</span>&nbsp;<span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br /><span style="color: #008080; ">12</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">char</span>[]&nbsp;toPrimitive(Character[]&nbsp;array)&nbsp;{<br /><span style="color: #008080; ">13</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(array&nbsp;==&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="color: #008080; ">14</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">null</span>;<br /><span style="color: #008080; ">15</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(array.length&nbsp;==&nbsp;0)&nbsp;{<br /><span style="color: #008080; ">16</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;EMPTY_CHAR_ARRAY;<br /><span style="color: #008080; ">17</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">18</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">char</span>[]&nbsp;result&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;<span style="color: #0000FF; ">char</span>[array.length];<br /><span style="color: #008080; ">19</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;array.length;&nbsp;i++)&nbsp;{<br /><span style="color: #008080; ">20</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result[i]&nbsp;=&nbsp;array[i].charValue();<br /><span style="color: #008080; ">21</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><span style="color: #008080; ">22</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;result;<br /><span style="color: #008080; ">23</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>代码里面如果换了我,一定会在第20行加一个非空判断,但这里没有.也许别人认为这是错误的情况另一个方法"char[] org.apache.commons.lang3.<a href="eclipse-javadoc:%E2%98%82=commons-lang3-3.1/src%3Corg.apache.commons.lang3%7BArrayUtils.java%E2%98%83ArrayUtils">ArrayUtils</a>.toPrimitive(<a href="eclipse-javadoc:%E2%98%82=commons-lang3-3.1/src%3Corg.apache.commons.lang3%7BArrayUtils.java%E2%98%83ArrayUtils~toPrimitive~%5C%E2%98%83QCharacter;~C%E2%98%82Character">Character</a>[]  array, char valueForNull)"可以完美的替换它吧.但总觉得应该加个非空判断上去要好一些.<img src ="http://www.blogjava.net/zhouxianglh/aggbug/386619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zhouxianglh/" target="_blank">胖子胖子</a> 2012-08-30 18:11 <a href="http://www.blogjava.net/zhouxianglh/articles/386619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>