﻿<?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-心情小站-随笔分类-j2se基础</title><link>http://www.blogjava.net/RongHao/category/5946.html</link><description>勤学、勤思</description><language>zh-cn</language><lastBuildDate>Mon, 20 Sep 2010 06:16:14 GMT</lastBuildDate><pubDate>Mon, 20 Sep 2010 06:16:14 GMT</pubDate><ttl>60</ttl><item><title>关于异常的问与答</title><link>http://www.blogjava.net/RongHao/archive/2010/09/19/332478.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Sun, 19 Sep 2010 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2010/09/19/332478.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/332478.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2010/09/19/332478.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/332478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/332478.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/RongHao/archive/2010/09/19/332478.html'>阅读全文</a><img src ="http://www.blogjava.net/RongHao/aggbug/332478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2010-09-19 22:03 <a href="http://www.blogjava.net/RongHao/archive/2010/09/19/332478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我对异常的处理方式</title><link>http://www.blogjava.net/RongHao/archive/2006/02/20/31654.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Mon, 20 Feb 2006 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2006/02/20/31654.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/31654.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2006/02/20/31654.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/31654.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/31654.html</trackback:ping><description><![CDATA[个人比较懒一点，对异常处理也懒的可以。程序中异常分为Exception和RuntimeException。每个层定义一个RuntimeException，例如DAO层，就一个DaoRuntimeException;service层，就一个ServiceRuntimeException.所有该层中程序无法恢复的异常通通用各层的RuntimeException封装扔出，最后统一捕捉有一个专门的异常处理类处理（这个类也就是读出异常类中所包含的信息，最后告诉用户：不好意思，系统问题，请通知那帮程序员！）<BR>而Exception定义的比较多一点，其实仅仅是类的签名不同而已。它们表达了不期望的各种事件流，可以通过它们来部分的控制事件逻辑。比如很简单的一个UnauthorizedException，告诉客户没有权限等等，调用捕捉到这个异常就会改变事件流到相应处理页面提示用户。<img src ="http://www.blogjava.net/RongHao/aggbug/31654.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2006-02-20 15:36 <a href="http://www.blogjava.net/RongHao/archive/2006/02/20/31654.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Reflection的三个动态性质(转)</title><link>http://www.blogjava.net/RongHao/archive/2006/01/17/28322.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Tue, 17 Jan 2006 09:41:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2006/01/17/28322.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/28322.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2006/01/17/28322.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/28322.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/28322.html</trackback:ping><description><![CDATA[<STRONG>一、执行期根据方法的名称来执行方法</STRONG><BR>下面的示例演示了这一操作：<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"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.lang.reflect.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR><IMG id=Codehighlighter1_49_800_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_800_Open_Text.style.display='none'; Codehighlighter1_49_800_Closed_Image.style.display='inline'; Codehighlighter1_49_800_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_49_800_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_49_800_Closed_Text.style.display='none'; Codehighlighter1_49_800_Open_Image.style.display='inline'; Codehighlighter1_49_800_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;method2&nbsp;</SPAN><SPAN id=Codehighlighter1_49_800_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_49_800_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_83_109_Open_Image onclick="this.style.display='none'; Codehighlighter1_83_109_Open_Text.style.display='none'; Codehighlighter1_83_109_Closed_Image.style.display='inline'; Codehighlighter1_83_109_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_83_109_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_109_Closed_Text.style.display='none'; Codehighlighter1_83_109_Open_Image.style.display='inline'; Codehighlighter1_83_109_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&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;add(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;b)&nbsp;</SPAN><SPAN id=Codehighlighter1_83_109_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_83_109_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;b;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_153_798_Open_Image onclick="this.style.display='none'; Codehighlighter1_153_798_Open_Text.style.display='none'; Codehighlighter1_153_798_Closed_Image.style.display='inline'; Codehighlighter1_153_798_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_153_798_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_153_798_Closed_Text.style.display='none'; Codehighlighter1_153_798_Open_Image.style.display='inline'; Codehighlighter1_153_798_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</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[])&nbsp;</SPAN><SPAN id=Codehighlighter1_153_798_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_153_798_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_166_728_Open_Image onclick="this.style.display='none'; Codehighlighter1_166_728_Open_Text.style.display='none'; Codehighlighter1_166_728_Closed_Image.style.display='inline'; Codehighlighter1_166_728_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_166_728_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_166_728_Closed_Text.style.display='none'; Codehighlighter1_166_728_Open_Image.style.display='inline'; Codehighlighter1_166_728_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_166_728_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_166_728_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Class.forName(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">method2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;partypes[]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Class[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partypes[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer.TYPE;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partypes[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer.TYPE;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Method&nbsp;meth&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;cls.getMethod(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">add</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;partypes);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;method2&nbsp;methobj&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;method2();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;arglist[]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Object[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arglist[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer(</SPAN><SPAN style="COLOR: #000000">37</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arglist[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer(</SPAN><SPAN style="COLOR: #000000">47</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;retobj&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;meth.invoke(methobj,&nbsp;arglist);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;retval&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(Integer)&nbsp;retobj;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(retval.intvalue());<BR><IMG id=Codehighlighter1_750_793_Open_Image onclick="this.style.display='none'; Codehighlighter1_750_793_Open_Text.style.display='none'; Codehighlighter1_750_793_Closed_Image.style.display='inline'; Codehighlighter1_750_793_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_750_793_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_750_793_Closed_Text.style.display='none'; Codehighlighter1_750_793_Open_Image.style.display='inline'; Codehighlighter1_750_793_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(Throwable&nbsp;e)&nbsp;</SPAN><SPAN id=Codehighlighter1_750_793_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_750_793_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(e);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P>注：上面划线的粗体字最好用Object methobj =&nbsp; cls.newInstance();来代替，原因很明显如果这个类及方法事先都是清楚的也不需要用reflection了<BR>&nbsp;&nbsp;&nbsp; 假如一个程序在执行的某处的时候才知道需要执行某个方法，这个方法的名称是在程序的运行过程中指定的&nbsp;(例如，JavaBean 开发环境中就会做这样的事)，那么上面的程序演示了如何做到。上例中，getMethod 用于查找一个具有两个整型参数且名为 add 的方法。找到该方法并创建了相应的 Method&nbsp;对象之后，在正确的对象实例中执行它。执行该方法的时候，需要提供一个参数列表，这在上例中是分别包装了整数 37 和 47 的两个 Integer 对象。执行方法的返回的同样是一个 Integer 对象，它封装了返回值 84。<BR><BR><STRONG>二、执行期创建新的对象</STRONG></P>
<P>对于构造器，则不能像执行方法那样进行，因为执行一个构造器就意味着创建了一个新的对象 (准确的说，创建一个对象的过程包括分配内存和构造对象)。所以，与上例最相似的例子如下：<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.lang.reflect.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR><IMG id=Codehighlighter1_54_734_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_734_Open_Text.style.display='none'; Codehighlighter1_54_734_Closed_Image.style.display='inline'; Codehighlighter1_54_734_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_54_734_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_734_Closed_Text.style.display='none'; Codehighlighter1_54_734_Open_Image.style.display='inline'; Codehighlighter1_54_734_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;constructor2&nbsp;</SPAN><SPAN id=Codehighlighter1_54_734_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_54_734_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_81_86_Open_Image onclick="this.style.display='none'; Codehighlighter1_81_86_Open_Text.style.display='none'; Codehighlighter1_81_86_Closed_Image.style.display='inline'; Codehighlighter1_81_86_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_81_86_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_86_Closed_Text.style.display='none'; Codehighlighter1_81_86_Open_Image.style.display='inline'; Codehighlighter1_81_86_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;constructor2()&nbsp;</SPAN><SPAN id=Codehighlighter1_81_86_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_81_86_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_125_183_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_183_Open_Text.style.display='none'; Codehighlighter1_125_183_Closed_Image.style.display='inline'; Codehighlighter1_125_183_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_125_183_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_183_Closed_Text.style.display='none'; Codehighlighter1_125_183_Open_Image.style.display='inline'; Codehighlighter1_125_183_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;constructor2(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;b)&nbsp;</SPAN><SPAN id=Codehighlighter1_125_183_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_125_183_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">a&nbsp;=&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;b&nbsp;=&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;b);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_227_732_Open_Image onclick="this.style.display='none'; Codehighlighter1_227_732_Open_Text.style.display='none'; Codehighlighter1_227_732_Closed_Image.style.display='inline'; Codehighlighter1_227_732_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_227_732_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_227_732_Closed_Text.style.display='none'; Codehighlighter1_227_732_Open_Image.style.display='inline'; Codehighlighter1_227_732_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</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[])&nbsp;</SPAN><SPAN id=Codehighlighter1_227_732_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_227_732_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_240_662_Open_Image onclick="this.style.display='none'; Codehighlighter1_240_662_Open_Text.style.display='none'; Codehighlighter1_240_662_Closed_Image.style.display='inline'; Codehighlighter1_240_662_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_240_662_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_240_662_Closed_Text.style.display='none'; Codehighlighter1_240_662_Open_Image.style.display='inline'; Codehighlighter1_240_662_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_240_662_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_240_662_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Class.forName(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">constructor2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;partypes[]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Class[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partypes[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer.TYPE;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;partypes[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer.TYPE;<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Constructor&nbsp;ct&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;cls.getConstructor(partypes);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;arglist[]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Object[</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arglist[</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer(</SPAN><SPAN style="COLOR: #000000">37</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arglist[</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">]&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Integer(</SPAN><SPAN style="COLOR: #000000">47</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Object&nbsp;retobj&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;ct.newInstance(arglist);<BR><IMG id=Codehighlighter1_684_727_Open_Image onclick="this.style.display='none'; Codehighlighter1_684_727_Open_Text.style.display='none'; Codehighlighter1_684_727_Closed_Image.style.display='inline'; Codehighlighter1_684_727_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_684_727_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_684_727_Closed_Text.style.display='none'; Codehighlighter1_684_727_Open_Image.style.display='inline'; Codehighlighter1_684_727_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(Throwable&nbsp;e)&nbsp;</SPAN><SPAN id=Codehighlighter1_684_727_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_684_727_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(e);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P><STRONG>三、改变字段(域)的值</STRONG></P>
<P>reflection 的还有一个用处就是改变对象数据字段的值。reflection 可以从正在运行的程序中根据名称找到对象的字段并改变它，下面的例子可以说明这一点：<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">import</SPAN><SPAN style="COLOR: #000000">&nbsp;java.lang.reflect.</SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000">;<BR><IMG id=Codehighlighter1_48_474_Open_Image onclick="this.style.display='none'; Codehighlighter1_48_474_Open_Text.style.display='none'; Codehighlighter1_48_474_Closed_Image.style.display='inline'; Codehighlighter1_48_474_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_48_474_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_48_474_Closed_Text.style.display='none'; Codehighlighter1_48_474_Open_Image.style.display='inline'; Codehighlighter1_48_474_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;field2&nbsp;</SPAN><SPAN id=Codehighlighter1_48_474_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_48_474_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000">&nbsp;d;<BR><IMG id=Codehighlighter1_112_472_Open_Image onclick="this.style.display='none'; Codehighlighter1_112_472_Open_Text.style.display='none'; Codehighlighter1_112_472_Closed_Image.style.display='inline'; Codehighlighter1_112_472_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_112_472_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_112_472_Closed_Text.style.display='none'; Codehighlighter1_112_472_Open_Image.style.display='inline'; Codehighlighter1_112_472_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</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[])&nbsp;</SPAN><SPAN id=Codehighlighter1_112_472_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_112_472_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_125_402_Open_Image onclick="this.style.display='none'; Codehighlighter1_125_402_Open_Text.style.display='none'; Codehighlighter1_125_402_Closed_Image.style.display='inline'; Codehighlighter1_125_402_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_125_402_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_125_402_Closed_Text.style.display='none'; Codehighlighter1_125_402_Open_Image.style.display='inline'; Codehighlighter1_125_402_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">try</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN id=Codehighlighter1_125_402_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_125_402_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class&nbsp;cls&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Class.forName(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">field2</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Field&nbsp;fld&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;cls.getField(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">d</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;field2&nbsp;f2obj&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;field2();<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">d&nbsp;=&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;f2obj.d);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fld.setDouble(f2obj,&nbsp;</SPAN><SPAN style="COLOR: #000000">12.34</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">d&nbsp;=&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;f2obj.d);<BR><IMG id=Codehighlighter1_424_467_Open_Image onclick="this.style.display='none'; Codehighlighter1_424_467_Open_Text.style.display='none'; Codehighlighter1_424_467_Closed_Image.style.display='inline'; Codehighlighter1_424_467_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_424_467_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_424_467_Closed_Text.style.display='none'; Codehighlighter1_424_467_Open_Image.style.display='inline'; Codehighlighter1_424_467_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">catch</SPAN><SPAN style="COLOR: #000000">&nbsp;(Throwable&nbsp;e)&nbsp;</SPAN><SPAN id=Codehighlighter1_424_467_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.blogjava.net/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_424_467_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(e);<BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>这个例子中，字段 d 的值被变为了 12.34。<BR>实际开发时用Common BeanUtils <img src ="http://www.blogjava.net/RongHao/aggbug/28322.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2006-01-17 17:41 <a href="http://www.blogjava.net/RongHao/archive/2006/01/17/28322.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用commons.fileupload实现文件的上传和下载</title><link>http://www.blogjava.net/RongHao/archive/2005/12/16/24158.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Fri, 16 Dec 2005 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2005/12/16/24158.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/24158.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2005/12/16/24158.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/24158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/24158.html</trackback:ping><description><![CDATA[<P><STRONG>commons.fileupload实现文件的上传，代码如下：<BR></STRONG>&lt;%! <BR>&nbsp;//服务器端保存上传文件的路径 <BR>&nbsp;&nbsp;&nbsp; String saveDirectory = "g:\\upload\\";<BR>&nbsp;&nbsp;&nbsp; // 临时路径 一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录<BR>&nbsp;&nbsp;&nbsp; String tmpDirectory = "g:\\upload\\tmp\\";<BR>&nbsp;&nbsp;&nbsp; // 最多只允许在内存中存储的数据大小,单位:字节<BR>&nbsp;&nbsp;&nbsp; int maxPostSize = 1024 * 1024; <BR>%&gt;<BR>&lt;%<BR>&nbsp;&nbsp;&nbsp; // 文件内容&nbsp;<BR>&nbsp;&nbsp;&nbsp; String FileDescription = null; <BR>&nbsp;&nbsp;&nbsp; // 文件名（包括路径）<BR>&nbsp;&nbsp;&nbsp; String FileName = null;<BR>&nbsp;&nbsp;&nbsp; // 文件大小<BR>&nbsp;&nbsp;&nbsp; long FileSize = 0;<BR>&nbsp;&nbsp;&nbsp; // 文件类型<BR>&nbsp;&nbsp;&nbsp; String ContentType = null;</P>
<P>%&gt;</P>
<P>&lt;%<BR>&nbsp;&nbsp; DiskFileUpload fu = new DiskFileUpload();<BR>&nbsp;&nbsp;&nbsp; // 设置允许用户上传文件大小,单位:字节<BR>&nbsp;&nbsp; fu.setSizeMax(200*1024*1024);<BR>&nbsp;&nbsp;&nbsp; // 设置最多只允许在内存中存储的数据,单位:字节<BR>&nbsp;&nbsp; fu.setSizeThreshold(maxPostSize);<BR>&nbsp;&nbsp;&nbsp; // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录<BR>&nbsp;&nbsp; fu.setRepositoryPath("g:\\upload\\tmp\\");<BR>&nbsp;&nbsp;&nbsp; //开始读取上传信息 得到所有文件<BR>&nbsp;&nbsp; try{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List fileItems = fu.parseRequest(request);<BR>&nbsp;&nbsp;&nbsp;&nbsp; }catch(FileUploadException e){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //这里异常产生的原因可能是用户上传文件超过限制、不明类型的文件等<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //自己处理的代码<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>%&gt;<BR>&lt;%<BR>&nbsp;&nbsp; // 依次处理每个上传的文件<BR>&nbsp;&nbsp; Iterator iter = fileItems.iterator();<BR>&nbsp;&nbsp; while (iter.hasNext()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp; FileItem item = (FileItem) iter.next();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //忽略其他不是文件域的所有表单信息<BR>&nbsp;&nbsp;&nbsp;&nbsp; if (!item.isFormField()) {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name = item.getName();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long size = item.getSize();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String&nbsp; contentType = item.getContentType();<BR>&nbsp;&nbsp;&nbsp;&nbsp; if((name==null||name.equals("")) &amp;&amp; size==0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<BR>%&gt;<BR>&lt;%<BR>&nbsp;&nbsp; //保存上传的文件到指定的目录<BR>&nbsp; String[] names=StringUtils.split(name,"\\");&nbsp; //对原来带路径的文件名进行分割<BR>&nbsp;&nbsp; name = names[names.length-1];<BR>&nbsp;&nbsp; item.write(new File(saveDirectory+ name));<BR>&nbsp; }<BR>}<BR>%&gt;<BR>&nbsp;下面是其简单的使用场景：<BR>&nbsp;A、上传项目只要足够小，就应该保留在内存里。<BR>&nbsp;B、较大的项目应该被写在硬盘的临时文件上。<BR>&nbsp;C、非常大的上传请求应该避免。<BR>&nbsp;D、限制项目在内存中所占的空间，限制最大的上传请求，并且设定临时文件的位置。<BR>&nbsp;<BR>&nbsp;可以根据具体使用用servlet来重写，具体参数配置可以统一放置到一配置文件<BR>&nbsp; 
<HR>
<BR>&nbsp;<STRONG>文件的下载用servlet实现</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void doGet(HttpServletRequest request,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpServletResponse response)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;String aFilePath = null;&nbsp;&nbsp;&nbsp; //要下载的文件路径<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String aFileName = null;&nbsp;&nbsp;&nbsp; //要下载的文件名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream in = null;&nbsp; //输入流<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServletOutputStream out = null;&nbsp; //输出流
<P></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&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;&nbsp; aFilePath = getFilePath(request); <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aFileName = getFileName(request);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setContentType(getContentType(aFileName) + "; charset=UTF-8");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.setHeader("Content-disposition", "attachment; filename=" + aFileName);</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in = new&nbsp; FileInputStream(aFilePath + aFileName); //读入文件<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out = response.getOutputStream();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.flush();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int aRead = 0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((aRead = in.read()) != -1 &amp; in != null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write(aRead);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.flush();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Throwable e)<BR>&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp; log.error("FileDownload doGet() IO error!",e);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<BR>&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; in.close();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.close();<BR>&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; catch(Throwable e)<BR>&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;log.error("FileDownload doGet() IO close error!",e);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp; }</P><img src ="http://www.blogjava.net/RongHao/aggbug/24158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2005-12-16 10:46 <a href="http://www.blogjava.net/RongHao/archive/2005/12/16/24158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Jakarta Commons Cookbook 笔记] StringUtils类使用</title><link>http://www.blogjava.net/RongHao/archive/2005/12/14/23823.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Wed, 14 Dec 2005 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2005/12/14/23823.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/23823.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2005/12/14/23823.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/23823.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/23823.html</trackback:ping><description><![CDATA[<P>&nbsp;<STRONG> 检查字符串是否为空或null或仅仅包含空格<BR></STRONG>&nbsp; String test = "";<BR>&nbsp; String test1=" ";<BR>&nbsp; String test2 = "\n\n\t";<BR>&nbsp; String test3 = null;<BR>&nbsp; System.out.println( "test blank? " + StringUtils.isBlank( test ) ); <BR>&nbsp; System.out.println( "test1 blank? " + StringUtils.isBlank( test1 ) );<BR>&nbsp; System.out.println( "test2 blank? " + StringUtils.isBlank( test2 ) );<BR>&nbsp; System.out.println( "test3 blank? " + StringUtils.isBlank( test3 ) );<BR>&nbsp; 运行结果：<BR>&nbsp; test blank? true<BR>&nbsp; test1 blank? true<BR>&nbsp; test2 blank? true<BR>&nbsp; test3 blank? true<BR>&nbsp; 相对应的还有一个StringUtils.isNotBlank(String str)<BR>&nbsp; StringUtils.isEmpty(String str)则检查字符串是否为空或null（不检查是否仅仅包含空格）<BR>&nbsp; <BR>&nbsp; <STRONG>分解字符串</STRONG><BR>&nbsp; StringUtils.split(null, *, *)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = null<BR>&nbsp; StringUtils.split("", *, *)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = []<BR>&nbsp; StringUtils.split("ab de fg", null, 0)&nbsp;&nbsp; = ["ab", "cd", "ef"]<BR>&nbsp; StringUtils.split("ab&nbsp;&nbsp; de fg", null, 0) = ["ab", "cd", "ef"]<BR>&nbsp; StringUtils.split("ab:cd:ef", ":", 0)&nbsp;&nbsp;&nbsp; = ["ab", "cd", "ef"]<BR>&nbsp; StringUtils.split("ab:cd:ef", ":", 1)&nbsp;&nbsp;&nbsp; = ["ab:cd:ef"]<BR>&nbsp; StringUtils.split("ab:cd:ef", ":", 2)&nbsp;&nbsp;&nbsp; = ["ab", "cd:ef"]<BR>&nbsp; StringUtils.split(String str,String separatorChars,int max) str为null时返回null<BR>&nbsp; separatorChars为null时默认为按空格分解，max为0或负数时分解没有限制，max为1时返回整个字符串，max为分解成的个数（大于实际则无效）<BR>&nbsp; <BR>&nbsp; <STRONG>去除字符串前后指定的字符</STRONG><BR>&nbsp; StringUtils.strip(null, *)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = null<BR>&nbsp; StringUtils.strip("", *)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ""<BR>&nbsp; StringUtils.strip("abc", null)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = "abc"<BR>&nbsp; StringUtils.strip(" abc ", null)&nbsp;&nbsp;&nbsp; = "abc"<BR>&nbsp; StringUtils.strip("&nbsp; abcyx", "xyz") = "&nbsp; abc"<BR>&nbsp; StringUtils.strip(String str,String stripChars) str为null时返回null,stripChars为null时默认为空格</P>
<P>&nbsp; <STRONG>创建醒目的Header（调试时用）</STRONG><BR>&nbsp; public String createHeader( String title ) {<BR>&nbsp;&nbsp;&nbsp; int width = 30;<BR>&nbsp;&nbsp;&nbsp; String stars = StringUtils.repeat( "*", width);<BR>&nbsp;&nbsp;&nbsp; String centered = StringUtils.center( title, width, "*" );<BR>&nbsp;&nbsp;&nbsp; String heading = StringUtils.join(new Object[]{stars, centered, stars}, "\n");<BR>&nbsp;&nbsp;&nbsp; return heading;<BR>&nbsp; }<BR>&nbsp; 调用createHeader("TEST")的输出结果:<BR>&nbsp; ******************************<BR>&nbsp; ************ TEST ************<BR>&nbsp; ******************************</P>
<P>&nbsp; <STRONG>字符的全部反转及以单个词为单位的反转<BR></STRONG>&nbsp; String original = "In time, I grew tired of his babbling nonsense.";<BR>&nbsp; StringUtils.reverse( original )&nbsp;&nbsp; = ".esnesnon gnilbbab sih fo derit werg I ,emit nI"<BR>&nbsp; 以单个词为单位的反转<BR>&nbsp; public Sentence reverseSentence(String sentence) {<BR>&nbsp;&nbsp;&nbsp; String reversed = StringUtils.chomp( sentence, "." );<BR>&nbsp;&nbsp;&nbsp; reversed = StringUtils.reverseDelimited( reversed, ' ' );<BR>&nbsp;&nbsp;&nbsp; reversed = reversed + ".";<BR>&nbsp;&nbsp;&nbsp; return reversed;<BR>&nbsp; }<BR>&nbsp; String sentence = "I am Susan."<BR>&nbsp; reverseSentence( sentence ) )&nbsp;&nbsp; = "Susan am I."</P>
<P>&nbsp; <STRONG>检查字符串是否仅仅包含数字、字母或数字和字母的混合<BR></STRONG>&nbsp; String test1 = "ORANGE";<BR>&nbsp; String test2 = "ICE9";<BR>&nbsp; String test3 = "ICE CREAM";<BR>&nbsp; String test4 = "820B Judson Avenue";<BR>&nbsp; String test5 = "1976";<BR>&nbsp; 结果：<BR>&nbsp; boolean t1val = StringUtils.isAlpha( test1 ); // returns true<BR>&nbsp; boolean t2val = StringUtils.isAlphanumeric( test2 ); // returns true<BR>&nbsp; boolean t3val = StringUtils.isAlphaSpace( test3 ); // returns true<BR>&nbsp; boolean t4val = StringUtils.isAlphanumericSpace( test4 ); // returns true<BR>&nbsp; boolean t5val = StringUtils.isNumeric( test5 ); // returns true</P><img src ="http://www.blogjava.net/RongHao/aggbug/23823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2005-12-14 12:47 <a href="http://www.blogjava.net/RongHao/archive/2005/12/14/23823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[Jakarta Commons Cookbook 笔记] ArrayUtils类使用</title><link>http://www.blogjava.net/RongHao/archive/2005/12/13/23712.html</link><dc:creator>ronghao</dc:creator><author>ronghao</author><pubDate>Tue, 13 Dec 2005 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/RongHao/archive/2005/12/13/23712.html</guid><wfw:comment>http://www.blogjava.net/RongHao/comments/23712.html</wfw:comment><comments>http://www.blogjava.net/RongHao/archive/2005/12/13/23712.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/RongHao/comments/commentRss/23712.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/RongHao/services/trackbacks/23712.html</trackback:ping><description><![CDATA[<P>&nbsp; <STRONG>primitive 数组克隆及反转排序<BR></STRONG>&nbsp; long[] array = { 1, 3, 2, 3, 5, 6 };<BR>&nbsp; long[] reversed = ArrayUtils.clone( array );<BR>&nbsp; ArrayUtils.reverse( reversed );<BR>&nbsp; System.out.println( "Original: " + ArrayUtils.toString( array ) );&nbsp;&nbsp; //打印<BR>&nbsp; System.out.println( "Reversed: " + ArrayUtils.toString( reversed ) );<BR>&nbsp; <BR>&nbsp; <STRONG>对象数组克隆及反转排序<BR></STRONG>&nbsp; Long[] array = new Long[] { new Long(3), new Long(56), new Long(233) };<BR>&nbsp; Long[] reversed = ArrayUtils.clone( array );<BR>&nbsp; ArrayUtils.reverse( reversed );<BR>&nbsp; <BR>&nbsp; <STRONG>primitive 数组与对象数组之间的转换</STRONG><BR>&nbsp; long[] primitiveArray = new long[] { 12, 100, 2929, 3323 };<BR>&nbsp; Long[] objectArray = ArrayUtils.toObject( primitiveArray );<BR>&nbsp; Double[] doubleObjects = new Double[] { new Double( 3.22, 5.222, 3.221 ) };<BR>&nbsp; double[] doublePrimitives = ArrayUtils.toPrimitive( doubleObject );<BR>&nbsp; 注意：对象数组可以含有null元素，primitive 数组则不容许含有null元素，所以对象数组转换为primitive 数组时，可以添入第二个参数，当碰到为null的元素时用其代替（如下，Double.NaN）。如果不添入第二个参数，当碰到为null的元素时，则会抛出NullPointerException 。<BR>&nbsp; double[] result = ArrayUtils.toPrimitive( resultObjArray, Double.NaN&nbsp; );<BR>&nbsp; <BR><STRONG>&nbsp; 查找一个数组中是否含有特定的元素（查找对象数组时，比较的是对象的equals()方法），及特定元素的第一次出现位置和最后一次出现位置<BR></STRONG>&nbsp; String[] stringArray = { "Red", "Orange", "Blue", "Brown", "Red" };<BR>&nbsp; boolean containsBlue = ArrayUtils.contains( stringArray, "Blue" );<BR>&nbsp; int indexOfRed = ArrayUtils.indexOf( stringArray, "Red");<BR>&nbsp; int lastIndexOfRed = ArrayUtils.lastIndexOf( string, "Red" );&nbsp; <BR>&nbsp; <BR>&nbsp; <STRONG>由二维对象数组创建一个 Map<BR></STRONG>&nbsp; Object[] weightArray = <BR>&nbsp;&nbsp;&nbsp; new Object[][] { {"H" , new Double( 1.007)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"He", new Double( 4.002)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"Li", new Double( 6.941)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"Be", new Double( 9.012)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"B",&nbsp; new Double(10.811)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"C",&nbsp; new Double(12.010)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"N",&nbsp; new Double(14.007)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"O",&nbsp; new Double(15.999)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"F",&nbsp; new Double(18.998)},<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {"Ne", new Double(20.180)} };</P>
<P>&nbsp; Map weights = ArrayUtils.toMap( weightArray );<BR>&nbsp; Double hydrogenWeight = （Double)weights.get( "H" );<BR>&nbsp; 注意：当二维对象数组"key"值重复时，创建的Map，后面的键-值对会把前面的覆盖掉</P><img src ="http://www.blogjava.net/RongHao/aggbug/23712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/RongHao/" target="_blank">ronghao</a> 2005-12-13 18:48 <a href="http://www.blogjava.net/RongHao/archive/2005/12/13/23712.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>