<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.mxjava.com/styles/feedsky2.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.mxjava.com" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/mxjava" type="application/rss+xml"></fs:self_link><lastBuildDate>Sun, 12 Oct 2008 08:35:49 GMT</lastBuildDate><title>MXJAVA</title><description>关注Java相关技术，关注互联网。</description><image><url>http://www.feedsky.com/feed/mxjava/sc/gif</url><title>MXJAVA</title><link>http://www.mxjava.com/blog</link></image><link>http://www.mxjava.com/blog</link><language>en</language><pubDate>Sun, 12 Oct 2008 08:35:49 GMT</pubDate><item><title>java反射（三）</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/123215826/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　之前我们学习了利用 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 的反射机制，在运行期间生成对象和运行方法。相比较而言，今天的内容要简单很多－－运行期间运态为 Field 赋值。&lt;span id=&quot;more-178&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　１、在生成对象后，直接访问属性。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.reflect.Field;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;TestField&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;test;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Class&amp;nbsp;cls&amp;nbsp;=&amp;nbsp;Class.forName(&lt;span class=&quot;string&quot;&gt;&amp;quot;TestField&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Field&amp;nbsp;f&amp;nbsp;=&amp;nbsp;cls.getField(&lt;span class=&quot;string&quot;&gt;&amp;quot;test&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TestField&amp;nbsp;tf&amp;nbsp;= &lt;span class=&quot;keyword&quot;&gt;(TestField)cls.newInstance();&lt;/span&gt;&lt;span&gt; &lt;br /&gt;
    &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f.set(tf,&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;abc&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(tf.test);&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;ex)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(ex);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　为了访问 Class TestField 的属性 test，我们需要生成其 Class 对象，利用 Class 的 getField 方法得到 Field 后，只要调用 Field 的 set 方法就可以为其赋值了。一般情况下，对象的属性都会设计为 private 的，这时，上面的程序就会抛出 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.NoSuchFieldException: test 异常。其实，利用反射是可以访问 private 属性的，只要将上面的 getField 改为 getDeclaredField 方法即可。&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; title=&quot;JAVA&quot; rel=&quot;tag nofollow&quot;&gt;JAVA&lt;/a&gt;, &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/reflection&quot; title=&quot;反射&quot; rel=&quot;tag nofollow&quot;&gt;反射&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/11.html&quot; title=&quot;编程时要注意细节 (9月 8, 2007)&quot;&gt;编程时要注意细节&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/61.html&quot; title=&quot;程序设计不是这么简单 (7月 3, 2008)&quot;&gt;程序设计不是这么简单&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/54.html&quot; title=&quot;用rome解析rss (6月 14, 2008)&quot;&gt;用rome解析rss&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/10.html&quot; title=&quot;将显示层分离出来的利器 - Velocity (9月 11, 2007)&quot;&gt;将显示层分离出来的利器 - Velocity&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/9.html&quot; title=&quot;利用Velocity内核简化Ajax开发 (8月 29, 2007)&quot;&gt;利用Velocity内核简化Ajax开发&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/5.html&quot; title=&quot;利用URLClassLoader加载class到当前线程 (8月 25, 2006)&quot;&gt;利用URLClassLoader加载class到当前线程&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/8.html&quot; title=&quot;利用jcaptcha生成自定义验证码 (8月 28, 2007)&quot;&gt;利用jcaptcha生成自定义验证码&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/17.html&quot; title=&quot;Swing从丑小鸭到白天鹅 (9月 6, 2007)&quot;&gt;Swing从丑小鸭到白天鹅&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/7.html&quot; title=&quot;struts2默认的拦截器为何会失效 (5月 17, 2007)&quot;&gt;struts2默认的拦截器为何会失效&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/174.html&quot; title=&quot;Struts2 下自定义 VelocityContext (6月 28, 2007)&quot;&gt;Struts2 下自定义 VelocityContext&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/1c37c14165206d616fc600bf689a7613&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/1c37c14165206d616fc600bf689a7613/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/178.html/feed</wfw:commentRss><description>　　之前我们学习了利用 Java 的反射机制，在运行期间生成对象和运行方法。相比较而言，今天的内容要简单很多－－运行期间运态为 Field 赋值。

　　１、在生成对象后，直接访问属性。



&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/178.html&quot; title=&quot;java反射（三）&quot;&gt;阅读全文——共772字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/1c37c14165206d616fc600bf689a7613&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/1c37c14165206d616fc600bf689a7613/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>JAVA</category><category>编程开发</category><category>反射</category><pubDate>Sun, 12 Oct 2008 16:35:49 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/178.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=178</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/178.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/123215826/1492496</fs:itemid></item><item><title>WoPush基于博客的口碑营销</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/123028347/1492496/1/item.html</link><content:encoded>&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.wopush.com/wpblogger/BVUDTQZRAQ==/blog.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　大多数 blogger 都希望在写日志的同时能赚点小钱。虽然有很多渠道可以得到赚钱的机会，但是能真正赚到钱的博客仍然还是属于那些大博、名博。想要成为名博？月光的《&lt;a href=&quot;http://bookzh.com/&quot; target=&quot;_blank&quot;&gt;名博是怎样炼成的&lt;/a&gt;》出版后买一本好好炼吧。对于我们这些不知名的和刚上线的小博来说，即使加入了某些网站的赚钱活动，花费了大把的精力，投入了很多时间，效果并不一定好。不过，我仍然坚信博客一定能赚钱。&lt;span id=&quot;more-177&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;口碑营销是近年来慢慢兴起的营销方式，其方式赠与用户产品，颇感意外的用户会跟自己身边人谈论使用后的感受，众口相传的传播方式。博客代表了人，而博客是基于互联网的，传播速度和范围突破了传统方式的局限性，投资少，效果却是传统方式所无法相比的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.wopush.com/&quot; target=&quot;_blank&quot;&gt;WoPush&lt;/a&gt; 是一家以博客为载体的口碑营销推广的网站。其方式比较简单，只要网站侧变栏放置 WoPush 的 Widget ，大约30天左右，将会产生一定的收益。既然是口碑传播，征文活动当然是必不可少的。如果文笔精彩，还有机会赢得大奖。有兴趣的朋友可以试试。&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/blog&quot; title=&quot;blog&quot; rel=&quot;tag nofollow&quot;&gt;blog&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/27.html&quot; title=&quot;疯狂的煎蛋 (12月 26, 2007)&quot;&gt;疯狂的煎蛋&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/39.html&quot; title=&quot;用Google Reader给blog加个网摘 (1月 16, 2008)&quot;&gt;用Google Reader给blog加个网摘&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/14.html&quot; title=&quot;把blog的搜索任务外包给google (9月 2, 2007)&quot;&gt;把blog的搜索任务外包给google&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/15.html&quot; title=&quot;把blog的图片包外给Yupoo (9月 3, 2007)&quot;&gt;把blog的图片包外给Yupoo&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/28.html&quot; title=&quot;慎用WP-cache (12月 27, 2007)&quot;&gt;慎用WP-cache&lt;/a&gt; (3)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/154.html&quot; title=&quot;小技巧:隐藏图片真实地址 (9月 25, 2008)&quot;&gt;小技巧:隐藏图片真实地址&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/29.html&quot; title=&quot;FeedSky域名绑定变更 (12月 29, 2007)&quot;&gt;FeedSky域名绑定变更&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/159.html&quot; title=&quot;Blog手拉手2.5 For PJBlog (6月 19, 2006)&quot;&gt;Blog手拉手2.5 For PJBlog&lt;/a&gt; (2)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/21.html&quot; title=&quot;Blog大换血 (12月 20, 2007)&quot;&gt;Blog大换血&lt;/a&gt; (5)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/0ca6fda07b610bbfb1394bd1112d264e&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/0ca6fda07b610bbfb1394bd1112d264e/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/177.html/feed</wfw:commentRss><description>　　大多数 blogger 都希望在写日志的同时能赚点小钱。虽然有很多渠道可以得到赚钱的机会，但是能真正赚到钱的博客仍然还是属于那些大博、名博。想要成为名博？月光的《名博是怎样炼成的》出版后买一本好好炼吧。对于我们这些不知名的和刚上线的小博来说，即使加入了某些网站的赚钱活动，花费了大把的精力，投入了很多时间，效果并不一定好。不过，我仍然坚信博客一定能赚钱。

口碑营销是近年来慢慢兴起的营销方式，其方式赠与用户产品，颇感意外的用户会跟自己身边人谈论使用后的感受，众口相传的传播方式。博客代表了人，而博客是基于互联网的，传播速度和范围突破了传统方式的局限性，投资少，效果却是传统方式所无法相比的。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/177.html&quot; title=&quot;WoPush基于博客的口碑营销&quot;&gt;阅读全文——共417字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/0ca6fda07b610bbfb1394bd1112d264e&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/0ca6fda07b610bbfb1394bd1112d264e/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>blog</category><category>东拉西扯</category><pubDate>Sat, 11 Oct 2008 22:53:05 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/177.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=177</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/177.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/123028347/1492496</fs:itemid></item><item><title>Windows下的炫目Dock</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530473/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　如果你玩过 Mac OSX，对它的 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/dock&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 Dock 下的日志&quot;&gt;Dock&lt;/a&gt; 应该记忆深刻吧。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/3867764d8a2d/iq19pmgr.jpg&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　Windows 能不能拥有这样的特性呢？今天从&lt;a target=&quot;_blank&quot; href=&quot;http://www.weborn.org/&quot;&gt;网生代&lt;/a&gt;淘来了一个好东东 &amp;#8212; RocketDock，利用它就可以实现 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/dock&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 Dock 下的日志&quot;&gt;Dock&lt;/a&gt; 了，而且效果很炫哦。&lt;/p&gt;
&lt;p&gt;　　下载安装后，RocketDock 会根据操作系统的语言选择语言显示方式，有中文哦。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/4537764d8a2d/h4nnwoe6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　有多种皮肤可以选择，也可以从网上下载更多皮肤，保持新鲜感很重要。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/7641264d8a2d/7ynkete0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　可以添加目录、文件还有很多 RocketDock 自带的小程序。&lt;/p&gt;
&lt;p&gt;　　如果看哪个程序图标不顺眼，就用 RocketDock 提供的炫丽的图标替换它。你也可以设置程序运行方式，比如设置软件启动后自动最小化（播放器）。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/1232664d8a2d/medium.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　更眩的是，你可以设置程序最小化到 RocketDock 中，还有动画效果哦。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/3931364d8a2e/kf6bjpo2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　如果想删除某个文件，可以按信 Ctrl 键，拖动图标到桌面即可，非常方便。&lt;/p&gt;
&lt;p&gt;　　还有最重要的一点，它是免费的。如果你觉得 RocketDock 不错，也可以捐助它。&lt;/p&gt;
&lt;p&gt;　　总体说来 RocketDock 真是一款不错的软件，不过，再好的软件也要需要改进的地方。&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt; １、比如当添加的文件比较多时，会超出屏幕，导致有些程序无法选择。&lt;br /&gt;
２、不支持拖拽添加文件。&lt;br /&gt;
３、不支持文件快捷键。 &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;　　有兴趣下载来试试。如果你对它不满意？没关系，网生代那里还有&lt;a target=&quot;_blank&quot; href=&quot;http://www.weborn.org/free-dock-applications-for-windows-631/&quot;&gt;其它四款&lt;/a&gt;相同功能的软件，说不定有一款就是你喜欢的。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://rocketdock.com/download&quot;&gt;Download RocketDock&lt;/a&gt;&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/dock&quot; title=&quot;Dock&quot; rel=&quot;tag nofollow&quot;&gt;Dock&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;无相关日志&lt;/li&gt;
	&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/d5c818f87db04fb9f40803a093b79ad6&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/d5c818f87db04fb9f40803a093b79ad6/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/172.html/feed</wfw:commentRss><description>&lt;img src=&quot;http://pic.yupoo.com/hiswing/3867764d8a2d/small.jpg&quot; style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; /&gt;
　　如果你玩过 Mac OSX，对它的 Dock 应该记忆深刻吧。那么Windows 能不能拥有这样的特性呢？我们今天的主角 -- RocketDock，利用它就可以实现 Dock 了，而且效果很炫哦。&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/d5c818f87db04fb9f40803a093b79ad6&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/d5c818f87db04fb9f40803a093b79ad6/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>Dock</category><category>东拉西扯</category><pubDate>Mon, 06 Oct 2008 21:50:00 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/172.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=172</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/172.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530473/1492496</fs:itemid></item><item><title>Java反射（二）</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530474/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　目前流行的 Perl、Python、Ruby 等都是动态语言，所谓动态是指在程序运行期间可以改变程序结构和变量类型。&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 并不具备这点，所以&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt;不是动态语言。不过，尽管 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 不是动态语言，但利用它的 Reflection（反射）机制同样可以在程序运行期间得到 Class 的名称，构造并生成其实例。利用 Reflection 我们可以为 fields（属性）赋值，调用其 method。&lt;/p&gt;
&lt;p&gt;　　在《&lt;a href=&quot;http://www.mxjava.com/blog/archives/167.html&quot;&gt;Java反射（一）&lt;/a&gt;》一文中，我们简单了解了利用 Reflection 机制在程序运行期间生成 Class 实例，今天我们仍然简单地了解一下，利用 Reflection 机制为动态调用 method。&lt;span id=&quot;more-170&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　Class 对象的 getMethod 方法可以返回该 Class 表示的类（包括父类或接口）所声明的所有公共方法的 Method 数组。它有一个重载方法 getMethod(String name, Class&amp;#8230; parameterTypes)，该方法返回一个 Method 对象，它反映此 Class 对象所表示的类或接口的指定公共成员方法。name 参数是一个 String，用于指定方法名。parameterTypes 参数是按声明顺序标识该方法参数类型的 Class 对象的一个数组。如果 parameterTypes 为 null，则按空数组处理。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.reflect.Method;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;User&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;/**&amp;nbsp;用户ID&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;id;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;/**&amp;nbsp;用户名&amp;nbsp;*/&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;name;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;setId(String&amp;nbsp;id)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;&lt;span&gt;.id&amp;nbsp;=&amp;nbsp;id;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;getId()&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;&lt;span&gt;.id;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Method[]&amp;nbsp;methods&amp;nbsp;=&amp;nbsp;User.&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;.getMethods();&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Method&amp;nbsp;method&amp;nbsp;:&amp;nbsp;methods)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(method.getName());&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　运行上面的程序，控制台 User 及父类 Object 中的所有方法名称：&lt;br /&gt;
setId&lt;br /&gt;
main&lt;br /&gt;
getId&lt;br /&gt;
hashCode&lt;br /&gt;
getClass&lt;br /&gt;
wait&lt;br /&gt;
wait&lt;br /&gt;
wait&lt;br /&gt;
equals&lt;br /&gt;
toString&lt;br /&gt;
notify&lt;br /&gt;
notifyAll&lt;/p&gt;
&lt;p&gt;　　若想要取得某一方法，将 main 方法改为如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Method&amp;nbsp;me&amp;nbsp;=&amp;nbsp;User.&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;.getMethod(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;getId&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Class&amp;nbsp;[]&amp;nbsp;{});&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(me.getName());&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;}&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;ex)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ex.printStackTrace();&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　若取得的方法需要参数，只要将参数类型传入即可：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Method&amp;nbsp;me&amp;nbsp;=&amp;nbsp;User.&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;.getMethod(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;setId&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Class&amp;nbsp;[]&amp;nbsp;{String.&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;});&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　很多情况下，方法的参数类型是一个接口，或者是一个类型的父类型，这时若我们传入的参数类型为其子类型时将抛出 NoSuchMethodException 异常。这也很容易理解，&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 允许方法重载，相同名字的方法有可能会有多个，而区分这些方法的条件就是其参数个数和类型。所以如果不使用方法参数的实际类型做为查找条件，取到的方法很有可能是错误的。如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.reflect.Method;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;Manager&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;extends&lt;/span&gt;&lt;span&gt;&amp;nbsp;User&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;User&amp;nbsp;u;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;set(User&amp;nbsp;u)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;&lt;span&gt;.u&amp;nbsp;=&amp;nbsp;u;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt;&lt;span&gt;&amp;nbsp;main(String[]&amp;nbsp;args)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;try&lt;/span&gt;&lt;span&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Method&amp;nbsp;me&amp;nbsp;=&amp;nbsp;Manager.&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;.getMethod(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;set&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Class&amp;nbsp;[]&amp;nbsp;{Manager.&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;});&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(me.getName());&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;catch&lt;/span&gt;&lt;span&gt;&amp;nbsp;(Exception&amp;nbsp;ex)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ex.printStackTrace();&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　Manager 继承了 User，并且声明了一个 User 为参数的 set 方法，这时如果我们的 getMethod 的参数中使用 Manager 做为参数类型，将抛出异常。&lt;br /&gt;
&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.NoSuchMethodException: Manager.set(Manager)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; at &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;.lang.Class.getMethod(Class.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;:1605)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; at Manager.main(Manager.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt;:12)&lt;/p&gt;
&lt;p&gt;　　这时，我们可以改用 User.class 或 Manager.class.getSuperclass() 作为参数。&lt;/p&gt;
&lt;p&gt;　　若方法的参数类型为接口的场合，我们可以利用 Class 的 getInterfaces 方法取得其实现的接口类型。&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 允许实现多个接口，所以 getInterfaces 方法返回一个 Class 的数组。&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/reflection&quot; title=&quot;反射&quot; rel=&quot;tag nofollow&quot;&gt;反射&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/178.html&quot; title=&quot;java反射（三） (10月 12, 2008)&quot;&gt;java反射（三）&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/167.html&quot; title=&quot;Java反射（一） (10月 2, 2008)&quot;&gt;Java反射（一）&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/dc50d646a1ed4bb4ab5b6d5d0271aa8d&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/dc50d646a1ed4bb4ab5b6d5d0271aa8d/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/170.html/feed</wfw:commentRss><description>　　目前流行的 Perl、Python、Ruby 等都是动态语言，所谓动态是指在程序运行期间可以改变程序结构和变量类型。Java 并不具备这点，所以Java不是动态语言。不过，尽管 Java 不是动态语言，但利用它的 Reflection（反射）机制同样可以在程序运行期间得到 Class 的名称，构造并生成其实例。利用 Reflection 我们可以为 fields（属性）赋值，调用其 method。

　　在《Java反射（一）》一文中，我们简单了解了利用 Reflection 机制在程序运行期间生成 Class 实例，今天我们仍然简单地了解一下，利用 Reflection 机制为动态调用 method。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/170.html&quot; title=&quot;Java反射（二）&quot;&gt;阅读全文——共2479字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/dc50d646a1ed4bb4ab5b6d5d0271aa8d&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/dc50d646a1ed4bb4ab5b6d5d0271aa8d/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>编程开发</category><category>反射</category><pubDate>Sun, 05 Oct 2008 13:32:20 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/170.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=170</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/170.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530474/1492496</fs:itemid></item><item><title>为FCKEditor追加Audio Player功能</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530475/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　&lt;a target=&quot;_blank&quot; href=&quot;http://www.1pixelout.net/code/audio-player-wordpress-plugin/&quot;&gt;Audio Player&lt;/a&gt; 是一款博客变播客的 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/wordpress&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 wordpress 下的日志&quot;&gt;WordPress&lt;/a&gt; 的轻量级音乐播放器。它的使用非常简单，只要在文章或页面中插入指定音乐播放的代码就可以正常工作了。虽然 Audio Player 的代码非常简单，不过对于不习惯写代码的 blogger 来说，每次都要手动写代码是比较痛苦的。我不知道在安装 Audio Player 后 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/wordpress&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 wordpress 下的日志&quot;&gt;WordPress&lt;/a&gt; 自带的编辑器是否有可视化编辑功能，我用的 FCKEditor 是没有的。于是趁今天早上有空，扩展了一下文章编辑器，使其播放代码能够在可视化窗口中完成配置并插入文章中。如果你需要这样的功能，如果你使用的编辑器是 &lt;a href=&quot;http://www.fckeditor.net/&quot; target=&quot;_blank&quot;&gt;FCKEditor&lt;/a&gt; （或者基于 FCKEditor 的 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/wordpress&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 wordpress 下的日志&quot;&gt;WordPress&lt;/a&gt;插件，例如 chenpress），那么 Follow Me。&lt;span id=&quot;more-169&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　１、用 &lt;a href=&quot;http://www.mxjava.com/blog/archives/168.html&quot;&gt;Editra&lt;/a&gt; 或 UltraEdit 打开 FCKeditor/fckconfig.js 文件（用记事本也可以，不过 FCKEditor 的代码非常多且没有缩进，如果没有代码高亮显示工具辅助的话，很有可能出错。要知道，一个字母的大小写都可能让 FCKEditor 无法正常工作）。找到 FCKConfig.ToolbarSets[&amp;quot;Default&amp;quot;] 在其后面加入 &amp;#8216;AudioPlay&amp;#8217;，用来告诉 FCKEditor 在工具栏追加一个按钮。如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-c&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;FCKConfig.ToolbarSets[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;Default&amp;quot;&lt;/span&gt;&lt;span&gt;]&amp;nbsp;=&amp;nbsp;[&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span class=&quot;string&quot;&gt;'Image'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'Flash'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'Rule'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'Smiley'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'Codes'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'-'&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 255, 255);&quot;&gt;&lt;span style=&quot;background-color: rgb(255, 0, 0);&quot;&gt;&lt;strong&gt;&lt;span class=&quot;string&quot;&gt;'AudioPlay'&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;]&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;]&amp;nbsp;;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　２、打开　FCKeditor/editor/lang/zh-cn.js 文件，找到 InsertCodes ，在其后面加入 AudioPlay : &amp;quot;插入MP3&amp;quot;。如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-c&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;InsertCodes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;插入代码&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;AudioPlay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;插入MP3&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　３、接下来的修改一定要细心。打开 FCKeditor/editor/js/fckeditorcode_gecko.js 和 fckeditorcode_ie.js 文件。&lt;br /&gt;
a、找到 |InsertHorizontalRule 在其后加入 |AudioPlay。&lt;br /&gt;
b、找到 case &amp;#8216;Image&amp;#8217;:B=new FCKDialogCommand 在其前面加入&lt;br /&gt;
case &amp;#8216;AudioPlay&amp;#8217;:B=new FCKDialogCommand(&amp;#8217;AudioPlay&amp;#8217;,FCKLang.AudioPlay,&amp;#8217;dialog/wpAudioPlay.html&amp;#8217;,450,390);break; 当工具栏按钮按下时，会打开这里指定的 html 文件。&lt;br /&gt;
c、找到 case &amp;#8216;Cut&amp;#8217;:B=new FCKToolbarButton 在其前面加入&lt;br /&gt;
case &amp;#8216;AudioPlay&amp;#8217;:B=new FCKToolbarButton(&amp;#8217;AudioPlay&amp;#8217;,FCKLang.AudioPlay,null,null,true,null,49);break; 用来指定工具栏上显示的图片。反正是自己用，就随便用了一个。如果你想改变，用PS打开FCKeditor\editor\skins\default\fck_strip.gif，追加自己的图片，并将这里的 49 改为图标的位数就可以了。&lt;/p&gt;
&lt;p&gt;　　４、&lt;a href=&quot;http://www.namipan.com/d/e15fbed12d5d23b42606fd73c09d8745e0694118b0050000&quot; target=&quot;_blank&quot;&gt;下载 wpAudioPlay.html 文件&lt;/a&gt;，并将其拷贝到 FCKeditor/editor/dialog 目录下。该文件是按下按钮弹出的画面，如果你比较了解 html 的话，完全可以自行修改。&lt;/p&gt;
&lt;p&gt;　　５、在 FCKeditor/editor/dialog 下新建目录命名为 wpAudioPlay 。&lt;a href=&quot;http://www.namipan.com/d/e15fbed12d5d23b42606fd73c09d8745e0694118b0050000&quot; target=&quot;_blank&quot;&gt;下载 wpAudioPlay.js 文件&lt;/a&gt;并拷贝到该目录下。&lt;/p&gt;
&lt;p&gt;　　重新打开&amp;ldquo;撰写文章&amp;rdquo;页面，在 FCKeditor 工具栏上是否增加了一个新按钮呢？如果没有，请选清除浏览器缓存再试。点击这个按钮将弹出如下画面：&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/1633964a8c99/1mvivtfe.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　MP3地址：在这里输入想要播放的mp3完整路径。如果mp3放在 audio player 指定的目录下，只要输入mp3的名字即可。和 audio player 官方说明的一样，如果想要播放多首mp3，只要用逗号分隔即可。&lt;/p&gt;
&lt;p&gt;　　自动播放：audio player 可以在打开页面后自动播放指定的音乐。在这里选择 Yes 则自动播放，选择 No 则相反。&lt;/p&gt;
&lt;p&gt;　　循环播放：同自动播放相同。&lt;/p&gt;
&lt;p&gt;　　以上都设置好后，按下确定，就会在指定的位置插入 audio player 播放音乐的代码。&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/wordpress&quot; title=&quot;wordpress&quot; rel=&quot;tag nofollow&quot;&gt;wordpress&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/28.html&quot; title=&quot;慎用WP-cache (12月 27, 2007)&quot;&gt;慎用WP-cache&lt;/a&gt; (3)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/135.html&quot; title=&quot;快成插件狂人了 (9月 9, 2008)&quot;&gt;快成插件狂人了&lt;/a&gt; (4)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/139.html&quot; title=&quot;cos-html-cache失效问题解决 (9月 13, 2008)&quot;&gt;cos-html-cache失效问题解决&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/21.html&quot; title=&quot;Blog大换血 (12月 20, 2007)&quot;&gt;Blog大换血&lt;/a&gt; (5)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/fc54be163bffc43ddff7414c48fe09ce&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/fc54be163bffc43ddff7414c48fe09ce/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/169.html/feed</wfw:commentRss><description>　　Audio Player 是一款博客变播客的 WordPress 的轻量级音乐播放器。它的使用非常简单，只要在文章或页面中插入指定音乐播放的代码就可以正常工作了。虽然 Audio Player 的代码非常简单，不过对于不习惯写代码的 blogger 来说，每次都要手动写代码是比较痛苦的。我不知道在安装 Audio Player 后 WordPress 自带的编辑器是否有可视化编辑功能，我用的 FCKEditor 是没有的。于是趁今天早上有空，扩展了一下文章编辑器，使其播放代码能够在可视化窗口中完成配置并插入文章中。如果你需要这样的功能，如果你使用的编辑器是 FCKEditor （或者基于 FCKEditor 的 WordPress插件，例如 chenpress），那么 Follow Me。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/169.html&quot; title=&quot;为FCKEditor追加Audio Player功能&quot;&gt;阅读全文——共1904字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/fc54be163bffc43ddff7414c48fe09ce&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/fc54be163bffc43ddff7414c48fe09ce/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><enclosure url="http://old.jedcast.net/board/upfiles/Westlife%20-%20My%20Love.mp3" length="3568176" type="audio/mpeg"></enclosure><category>wordpress</category><category>折腾捣鼓</category><pubDate>Sat, 04 Oct 2008 15:18:34 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/169.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=169</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/169.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530475/1492496</fs:itemid></item><item><title>Editra简洁实用的编辑器</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530476/1492496/1/item.html</link><content:encoded>&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/341086491043/s81yowdk.jpg&quot; style=&quot;border: 1px solid rgb(204, 204, 204); display: block; float: right; margin-left: 10px;&quot; /&gt; 　　Editra 是一款开源的代码编辑器。100%用Python编写，具有跨平台的能为（ Linux、Windows、Mac OS X ）。同大多数开发工具相同，Editra 支持插件扩展。好的软件大多支持多国语言，Editra 支持近16种语言，其中包括中文。安装 Editra 后，它会自动辨别操作系统语言来选择使用何种语言显示。&lt;span id=&quot;more-168&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　大多数用户使用软件总会希望功能越强大越好。这里需要指出的是，软件所谓的&amp;ldquo;强大&amp;rdquo;是指该软件所涉及专业领域功能强大，而不是各种乱七八糟的功能的合集。比如 Google ，它就是一个搜索引擎，十年来它的界面如同上线第一天那般简洁。简洁并不表示不强大，谁会说 Google 功能不强大呢？Editra 的界面同样也非常简洁，看上去更像是个记事本。简单的菜单栏、工具栏仅保留了几个常用的功能（UltraEdit的工具栏似乎不够用，在程序底部还增加了工具栏。但谁会经常用呢？），支持多标签窗口。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/547636491042/medium.jpg&quot; style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　那么 Editra 的界面真的是这么简单吗？我想下面这幅图会告诉你答案。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; src=&quot;http://pic.yupoo.com/hiswing/445166491042/medium.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　大多数开发者并不喜欢使用操作系统默认的方式保存代码文件，更倾向于使用 UTF-8 的编码方式，Editra v0.3.80 以后的版本已经支持文件编码方式设置。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&amp;nbsp;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; src=&quot;http://pic.yupoo.com/hiswing/999736491042/medium.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　即然是代码编辑器，那么对代码高亮的支持肯定少不了。Editra 支持至少 60 种语言代码高亮。其实对于我而言，常用的也就 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt;、Ruby、C++、Groovy（不支持）、Python、PLSQL、SQL、JavaScript、HTML、XML这么几种。再多也没用，甚至还有很多没听说过语言。支持代码折叠，在编写比较大的 Class 时该功能非常实用。支持自动缩进，不过说句实话，Editra 的代码自动缩进并不十分智能，比如：&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void main(String[] args) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }　&amp;rarr;　最后的花括号&amp;quot; } &amp;quot;不能自动向前缩进，不得不手动调整。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/116016491042/medium.jpg&quot; style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　支持 Vi 仿真，不过只支持部分Vi命令(http://editra.org/index.php?page=doc&amp;amp;doc=vi_emu)。&lt;/p&gt;
&lt;p&gt;　　Editra 目前还是发展中的软件，插件并不多（当然不能和 Eclipse、&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/wordpress&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 wordpress 下的日志&quot;&gt;WordPress&lt;/a&gt; 相提并论），不过在插件中仍然有一些很实用的，比如 Project，该插件可以作为版本控制的客户端使用。Launch 也是一个不错的插件，可以在编辑器中直接运行程序。不过遗憾的是，不支持 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt;。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; src=&quot;http://pic.yupoo.com/hiswing/535736491042/medium.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　也许是我太&amp;ldquo;暴力&amp;rdquo;，使用中发现中要选择 File Browser 的&amp;ldquo;显示隐藏文件&amp;rdquo;选择框程序就会崩溃。还有待改进。&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/700006491042/medium.jpg&quot; style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　总体来说，Editra 是一款正在发展中的软件，还有许多地方有待改进，不过目前所具备的功能已经可以满足我们的编码需求。有兴趣可以到&lt;a target=&quot;_blank&quot; href=&quot;http://editra.org/index.php&quot;&gt;官方网站&lt;/a&gt;下载。&lt;/p&gt;
&lt;p&gt;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;- 音乐分割线 &amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;&amp;mdash;-&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/editor&quot; title=&quot;编辑器&quot; rel=&quot;tag nofollow&quot;&gt;编辑器&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/175.html&quot; title=&quot;Velocity 和 JS 操作 FCKEditor (7月 10, 2007)&quot;&gt;Velocity 和 JS 操作 FCKEditor&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/20fb8ba280a66e6c0f3d0f11e94cac3b&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/20fb8ba280a66e6c0f3d0f11e94cac3b/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/168.html/feed</wfw:commentRss><description>　　Editra 是一款开源的代码编辑器。100%用Python编写，具有跨平台的能为（ Linux、Windows、Mac OS X ）。同大多数开发工具相同，Editra 支持插件扩展。好的软件大多支持多国语言，Editra 支持近16种语言，其中包括中文。安装 Editra 后，它会自动辨别操作系统语言来选择使用何种语言显示。

　　大多数用户使用软件总会希望功能越强大越好。这里需要指出的是，软件所谓的&amp;#8220;强大&amp;#8221;是指该软件所涉及专业领域功能强大，而不是各种乱七八糟的功能的合集。比如 Google ，它就是一个搜索引擎，十年来它的界面如同上线第一天那般简洁。简洁并不表示不强大，谁会说 Google 功能不强大呢？Editra 的界面同样也非常简洁，看上去更像是个记事本。简单的菜单栏、工具栏仅保留了几个常用的功能（UltraEdit的工具栏似乎不够用，在程序底部还增加了工具栏。但谁会经常用呢？），支持多标签窗口。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/168.html&quot; title=&quot;Editra简洁实用的编辑器&quot;&gt;阅读全文——共1410字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/20fb8ba280a66e6c0f3d0f11e94cac3b&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/20fb8ba280a66e6c0f3d0f11e94cac3b/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><enclosure url="http://www.langxi.net/mp3/0-2.mp3" length="5316640" type="audio/mpeg"></enclosure><category>编辑器</category><category>编程开发</category><pubDate>Fri, 03 Oct 2008 12:26:40 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/168.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=168</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/168.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530476/1492496</fs:itemid></item><item><title>Java反射（一）</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530477/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　经过这两天的重构，&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;Grape&lt;/a&gt; 的内核基本上已经完成了。和大多数 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 框架一样，&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;Grape&lt;/a&gt; 中同样使用了反射机制在运行期间创建对象实例。在此分次为大家简单介绍一下 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 反射机制的使用。&lt;/p&gt;
&lt;p&gt;　　我们都知道，在 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 中对象的实例是通过 new 关键字来创建的。不过，这种方法属于硬编码，不易改变，不灵活。比如在程序中硬编码创建的 Employee 对象，若要使用 Manager 来代替它，只能修改代码。&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 的反射机制是使其具有动态特性的非常关键的一种机制，也是在JavaBean 中广泛应用的一种特性。它可以让程序在运行期间加载编译期间不得而知的Class。并可以生成其实例、调用其方法、为其属性赋值。比如著名的 Hibernate 框架中就大量的使用了反射。本文通过简单的例子，简单介绍如何利用反射生成对象实例。&lt;span id=&quot;more-167&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　１、利用反射创建对象实例。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;Class.forName(&amp;quot;sun.jdbc.odbc.JdbcOdbcDriver&amp;quot;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　上面的代码是否很熟悉？我们经常使用的 JDBC 驱动加载就是使用反射完成的。以上代码仅加载了对象到内存，若要得要对象的实例只需调用 Class 的 newInstance 方法即可。&lt;/p&gt;
&lt;p&gt;　　２、创建构造中带有参数的对象实例。&lt;/p&gt;
&lt;p&gt;　　&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;Java&lt;/a&gt; 允许一个类拥有多个构造方法，并且可以在构造对象时传入参数用来初始化对象。比如 Employee 对象的构造方法需要一个 String 的参数，用来告诉其 id 。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;Employee&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt;&lt;span&gt;&amp;nbsp;String&amp;nbsp;id;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt;&lt;span&gt;&amp;nbsp;Employee(String&amp;nbsp;id)&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;&lt;span&gt;.id&amp;nbsp;=&amp;nbsp;id;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　在利用反射创建 Emplyee 对象时，我们必需为其创建 Constructor 对象，用来反映此 &lt;code&gt;Class&lt;/code&gt; 对象所表示的类或接口的指定构造方法。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-j&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;生成class&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Class&amp;nbsp;cls&amp;nbsp;=&amp;nbsp;Class.forName(className);&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;参数类型&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Class[]&amp;nbsp;types&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;Class[]&amp;nbsp;{&amp;nbsp;String.&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;&lt;span&gt;&amp;nbsp;};&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;类数值对象&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Object[]&amp;nbsp;values&amp;nbsp;=&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt; Object[]&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;001&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;};&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;找到指定的构造方法&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Constructor&amp;nbsp;constructor&amp;nbsp;=&amp;nbsp;cls.getDeclaredConstructor(types);&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;设置安全检查，访问私有构造函数&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;constructor.setAccessible(&lt;span class=&quot;keyword&quot;&gt;true&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;创建对象&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Employee&amp;nbsp;e&amp;nbsp;=&amp;nbsp;(Employee)&amp;nbsp;constructor.newInstance(values);&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　利用以上方法，我们就可以在运行期间加载创建对象实例，程序的灵活性也随之大大提高。&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- 音乐分割线 &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; title=&quot;GRAPE&quot; rel=&quot;tag nofollow&quot;&gt;GRAPE&lt;/a&gt;, &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/reflection&quot; title=&quot;反射&quot; rel=&quot;tag nofollow&quot;&gt;反射&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/164.html&quot; title=&quot;更新grape的local标签 (9月 29, 2008)&quot;&gt;更新grape的local标签&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/165.html&quot; title=&quot;什么是grape (9月 29, 2008)&quot;&gt;什么是grape&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/101.html&quot; title=&quot;Swing程序的基本设计结构 (9月 2, 2008)&quot;&gt;Swing程序的基本设计结构&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/170.html&quot; title=&quot;Java反射（二） (10月 5, 2008)&quot;&gt;Java反射（二）&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/178.html&quot; title=&quot;java反射（三） (10月 12, 2008)&quot;&gt;java反射（三）&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/131.html&quot; title=&quot;Grape框架的基本思想 (9月 6, 2008)&quot;&gt;Grape框架的基本思想&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/a6c78c125b6029d0d833c6cb178c4250&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/a6c78c125b6029d0d833c6cb178c4250/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/167.html/feed</wfw:commentRss><description>　　经过这两天的重构，Grape 的内核基本上已经完成了。和大多数 Java 框架一样，Grape 中同样使用了反射机制在运行期间创建对象实例。在此分次为大家简单介绍一下 Java 反射机制的使用。

　　我们都知道，在 Java 中对象的实例是通过 new 关键字来创建的。不过，这种方法属于硬编码，不易改变，不灵活。比如在程序中硬编码创建的 Employee 对象，若要使用 Manager 来代替它，只能修改代码。Java 的反射机制是使其具有动态特性的非常关键的一种机制，也是在JavaBean 中广泛应用的一种特性。它可以让程序在运行期间加载编译期间不得而知的Class。并可以生成其实例、调用其方法、为其属性赋值。比如著名的 Hibernate 框架中就大量的使用了反射。本文通过简单的例子，简单介绍如何利用反射生成对象实例。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/167.html&quot; title=&quot;Java反射（一）&quot;&gt;阅读全文——共1290字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/a6c78c125b6029d0d833c6cb178c4250&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/a6c78c125b6029d0d833c6cb178c4250/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><enclosure url="http://www.langxi.net/mp3/03.mp3" length="6009733" type="audio/mpeg"></enclosure><category>GRAPE</category><category>编程开发</category><category>反射</category><pubDate>Thu, 02 Oct 2008 21:10:02 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/167.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=167</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/167.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530477/1492496</fs:itemid></item><item><title>喜欢搜狗，不喜欢搜狗</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530478/1492496/1/item.html</link><content:encoded>&lt;p&gt;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px; display: block; float: right; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;http://wubi.sogou.com/images/ui/wlogo.gif&quot; /&gt;&lt;/p&gt;
&lt;p&gt;　　搜狗拼音输入法将拼音输入法带入了新的时代。敏捷的输入方式，简单地敲几个键，完整的句子就轻松地显示在屏幕上。虽着网络日趋成熟，新兴的网络词汇层出不穷。不得不承认，我快成文盲了，时下流行的词汇很多都不知其意。比如最近非常流行的&amp;ldquo;冏&amp;rdquo;字，查看过一些相关资料和说明，仍然不能明白在什么场合下使用。还好，搜狗拼音认识几乎所有网络新兴起的词汇。&lt;span id=&quot;more-152&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;　　老实说，我是五笔用户，在以前我的电脑里只安装了五笔输入，操作系统自带的输入法全部删除。不过自从使用过搜狗拼音后就一直保留在我的电脑里。因为它太了解中文用户和中文了，因为喜欢搜狗。&lt;/p&gt;
&lt;p&gt;　　作为五笔用户，作为搜狗拼音的忠实用户，按理说搜狗五笔的出现应该让我更加兴奋。的确，听到搜狗五笔发布的消息确实让我兴奋了，不过下载试用后却令人大失所望。&lt;/p&gt;
&lt;p&gt;　　搜狗五笔和搜狗拼音虽然是同门，但招数却完全不同。如果用很好很强大来形容搜狗拼音的话，那么用很傻很天真来形容搜狗五笔应该不算过分。对于软件，细节做的越成功，软件就越成功，对于输入法而言也同样如此。搜狗五笔给人的最深的印像就是粗糙。作为用户，我们需要的是尽可能方便符合用户习惯的输入法。在《&lt;a href=&quot;http://www.mxjava.com/blog/archives/146.html&quot;&gt;给搜狗五笔的几点建议&lt;/a&gt;》一文中我给搜狗五笔提出了几点建议，也就是这几点让我今天不得不重新换回了极点五笔。&lt;/p&gt;
&lt;p&gt;　　也许搜狗五笔本应是个好软件，只不过搜狗并不原意让它那么完美。用过搜狗五笔的朋友都知道，搜狗五笔不仅仅是单纯的五笔输入法，它还内置了拼间输入法。然而这内置的拼音输入法并不是我们希望的搜狗拼音，甚至连微软拼音都不如。一些微软拼音都能够打出来的词组，搜狗五笔内置的拼音却打不出来。也许是因为极点五笔这样出色的输入法的存在，导致搜狗被逼无奈不得不在搜狗五笔中内置了拼音输入法。然而为了保护搜狗拼音，却又不得不把内置的拼音输入法做的很烂。何苦！&lt;/p&gt;
&lt;p&gt;　　五笔拼音合并是输入是必然之事。即使搜狗不情愿，其它优秀的输入法绝对不会漠视。话说回来，即使极点五笔也不能做到五笔拼音混打，更何况左右为难的搜狗呢？如果有一天，搜狗拼音和极点五笔真正双剑合璧，那才是我们用户真正的福音。&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- 音乐分割线 &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;-&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/input&quot; title=&quot;输入法&quot; rel=&quot;tag nofollow&quot;&gt;输入法&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/146.html&quot; title=&quot;给搜狗五笔的几点建议 (9月 16, 2008)&quot;&gt;给搜狗五笔的几点建议&lt;/a&gt; (2)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/cf09895956ade53272a803b1fac30a5b&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/cf09895956ade53272a803b1fac30a5b/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/152.html/feed</wfw:commentRss><description>　　搜狗拼音输入法将拼音输入法带入了新的时代。敏捷的输入方式，简单地敲几个键，完整的句子就轻松地显示在屏幕上。虽着网络日趋成熟，新兴的网络词汇层出不穷。不得不承认，我快成文盲了，时下流行的词汇很多都不知其意。比如最近非常流行的&amp;#8220;冏&amp;#8221;字，查看过一些相关资料和说明，仍然不能明白在什么场合下使用。还好，搜狗拼音认识几乎所有网络新兴起的词汇。

　　老实说，我是五笔用户，在以前我的电脑里只安装了五笔输入，操作系统自带的输入法全部删除。不过自从使用过搜狗拼音后就一直保留在我的电脑里。因为它太了解中文用户和中文了，因为喜欢搜狗。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/152.html&quot; title=&quot;喜欢搜狗，不喜欢搜狗&quot;&gt;阅读全文——共1012字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/cf09895956ade53272a803b1fac30a5b&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/cf09895956ade53272a803b1fac30a5b/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><enclosure url="http://mynb.cnool.net/upload/20080214110438368.mp3" length="3449768" type="audio/mpeg"></enclosure><category>输入法</category><category>东拉西扯</category><pubDate>Wed, 01 Oct 2008 22:04:59 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/152.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=152</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/152.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530478/1492496</fs:itemid></item><item><title>巧遇彩虹</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530479/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　今天下午接老婆回家，在路上恰巧看到了很大的彩虹，好漂亮啊！&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/535436443d5a/drdrs90t.jpg&quot; /&gt;&lt;span id=&quot;more-166&quot;&gt;&lt;/span&gt;&lt;br /&gt;
发现彩虹&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://pic.yupoo.com/hiswing/623666443d5a/rxisf1u1.jpg&quot; alt=&quot;&quot; style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px; margin-right: 10px;&quot; /&gt;&lt;br /&gt;
长这么大还没见过这么大的彩虹呢&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;embed width=&quot;500&quot; height=&quot;375&quot; src=&quot;http://player.youku.com/player.php/sid/XNDQ4NTkwNzY=/v.swf&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; type=&quot;application/x-shockwave-flash&quot;&gt;&lt;/embed&gt;&lt;br /&gt;
拍了一段视频&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/life&quot; title=&quot;心情随笔&quot; rel=&quot;tag nofollow&quot;&gt;心情随笔&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;无相关日志&lt;/li&gt;
	&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/e233dcd2afb138e4ed8deea88710f9ae&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/e233dcd2afb138e4ed8deea88710f9ae/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/166.html/feed</wfw:commentRss><description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img style=&quot;border: 1px solid rgb(204, 204, 204); padding: 5px; margin-right: 10px;&quot; alt=&quot;&quot; src=&quot;http://pic.yupoo.com/hiswing/623666443d5a/small.jpg&quot; /&gt;&lt;/p&gt;
　　今天下午接老婆回家，在路上恰巧看到了很大的彩虹，好漂亮啊！&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/e233dcd2afb138e4ed8deea88710f9ae&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/e233dcd2afb138e4ed8deea88710f9ae/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>心情随笔</category><pubDate>Mon, 29 Sep 2008 20:26:12 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/166.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=166</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/166.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530479/1492496</fs:itemid></item><item><title>更新grape的local标签</title><link>http://item.feedsky.com/~feedsky/mxjava/~7146119/121530480/1492496/1/item.html</link><content:encoded>&lt;p&gt;　　找个借口，也许是最近太忙，已经很久没有编写 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 了。如果不是职业程序员就好了，如果能有更高点的薪水，更充足的业余时间就好了。&lt;/p&gt;
&lt;p&gt;　　终于十一了，终于有自己的时间了，终于可以把 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 的进度往前赶赶了，终于不再找借口了。&lt;/p&gt;
&lt;p&gt;　　今天把 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 的 class.xml 配置进行了一个小修改。对 local 标签新增了 method 属性，用来指定方法调用。为什么要加这个属性？先来看看默认的配置。&lt;span id=&quot;more-164&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-xml&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;fileMenu&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;mxjava.com.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt;.ui.widget.menu.FileMenu&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;local&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuNewDB&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuNewDB&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;mxjava.com.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt;.ui.widget.menu.MenuNewDB&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;action&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;action&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;mxjava.com.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt;.ui.widget.menu.action.NewDBAction&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　以这种方法进行配置，&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 默认以 id 名为注射的方法名。在上例中标签 local 的 id 属性为 menuNewDB ，&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 会本地配置中寻找 id 为 menuNewDB 的配置项，在生成对象后，会默认调用 setMenuNewDB 方法将生成的 menuNewDB 对象注入 fileMenu 对象中。&lt;/p&gt;
&lt;p&gt;　　大多数情况下，以上配置方法就够用了。可是恰恰是 Menu 的例子不适用。因为为 Swing 中的 Menu 对象追加 MenuItem ，是使用 Add 方法的。它像 List 一样可以追加不同的 MenuItem 。用以上方法调用时，我们必须在程序中暴露对应的 setter 方法，用以注入对应的对象。如果这时我们想扩展 Menu ，新追加一个 menuCloseDB 的 MenuItem 的话怎么办？我们只能修改 FileMenu.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/java&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 JAVA 下的日志&quot;&gt;java&lt;/a&gt; 代码，新追加一个 MenuCloseDB 的属性，并暴露 setMenuCloseDB 方法，然后在 class.xml 中追加配置。这并不是个好方法，如果每次对程序进行扩展都要修改现有程序的话，将会是无尽的痛苦。所以对 &lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 内核做了修改，新追加了 method 属性，用来指定方法调用。&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-xml&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;fileMenu&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;mxjava.com.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt;.ui.widget.menu.FileMenu&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;local&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuNewDB&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;method&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;addItem&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt; 加载 menuNewDB 时，首先检查 method 是否存在，如果存在，则调用 method 指定的方法，如果不存在则以默认的方式调用 setMenuNewDB 方法，如此很好地改善了程序的扩展性。如果你想新增 menuCloseDB 和 menuExit 两个（或更多） MenuItem ，只要：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;ol class=&quot;dp-xml&quot;&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;fileMenu&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;class&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;mxjava.com.&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; class=&quot;st_tag internal_tag&quot; rel=&quot;tag nofollow&quot; title=&quot;标签 GRAPE 下的日志&quot;&gt;grape&lt;/a&gt;.ui.widget.menu.FileMenu&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;local&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuNewDB&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;method&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;addItem&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;local&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuCloseDB&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;method&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;addItem&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;local&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;id&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;menuExit&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;method&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;addItem&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;view&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt; &lt;br /&gt;
    &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;　　&lt;a href=&quot;http://www.mxjava.com/blog/archives/165.html&quot;&gt;什么是 grape&lt;/a&gt; ？&lt;/p&gt;

	&lt;h4&gt;标签：&lt;a href=&quot;http://www.mxjava.com/blog/archives/tag/grape&quot; title=&quot;GRAPE&quot; rel=&quot;tag nofollow&quot;&gt;GRAPE&lt;/a&gt;&lt;/h4&gt;

	&lt;h4&gt;相关日志：&lt;/h4&gt;
	&lt;ul class=&quot;st-related-posts&quot;&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/165.html&quot; title=&quot;什么是grape (9月 29, 2008)&quot;&gt;什么是grape&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/101.html&quot; title=&quot;Swing程序的基本设计结构 (9月 2, 2008)&quot;&gt;Swing程序的基本设计结构&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/167.html&quot; title=&quot;Java反射（一） (10月 2, 2008)&quot;&gt;Java反射（一）&lt;/a&gt; (0)&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/131.html&quot; title=&quot;Grape框架的基本思想 (9月 6, 2008)&quot;&gt;Grape框架的基本思想&lt;/a&gt; (0)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/bb7637241bea981999600bb545ba98c9&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/bb7637241bea981999600bb545ba98c9/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</content:encoded><wfw:commentRss>http://www.mxjava.com/blog/archives/164.html/feed</wfw:commentRss><description>　　找个借口，也许是最近太忙，已经很久没有编写 grape 了。如果不是职业程序员就好了，如果能有更高点的薪水，更充足的业余时间就好了。

　　终于十一了，终于有自己的时间了，终于可以把 grape 的进度往前赶赶了，终于不再找借口了。

　　今天把 grape 的 class.xml 配置进行了一个小修改。对 local 标签新增了 method 属性，用来指定方法调用。为什么要加这个属性？先来看看默认的配置。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://www.mxjava.com/blog/archives/164.html&quot; title=&quot;更新grape的local标签&quot;&gt;阅读全文——共1437字&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;!-- Feedsky ad --&gt;&lt;a href=&quot;http://feed.feedsky.com/~cpm/c/mxjava/bb7637241bea981999600bb545ba98c9&quot;&gt;&lt;img src=&quot;http://feed.feedsky.com/~cpm/mxjava/bb7637241bea981999600bb545ba98c9/s.gif&quot; border=&quot;0&quot; style=&quot;margin-top:5px;&quot; /&gt;&lt;/a&gt;&lt;!-- /Feedsky ad --&gt;</description><category>GRAPE</category><pubDate>Mon, 29 Sep 2008 12:59:34 +0800</pubDate><author>hiswing</author><comments>http://www.mxjava.com/blog/archives/164.html#comments</comments><guid isPermaLink="false">http://www.mxjava.com/blog/?p=164</guid><dc:creator>hiswing</dc:creator><fs:srclink>http://www.mxjava.com/blog/archives/164.html</fs:srclink><fs:srcfeed>http://www.mxjava.com/blog/index.php/feed</fs:srcfeed><fs:itemid>feedsky/mxjava/~7146119/121530480/1492496</fs:itemid></item></channel></rss>