<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[财富猪java站]]></title>
<link>http://www.caifuzhu.com.cn/</link>
<description><![CDATA[java学习站，让我们每天进步一点点！]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[zhouhaizhe@126.com(财富猪)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>财富猪java站</title> 
	<url>http://www.caifuzhu.com.cn/images/logos.gif</url> 
	<link>http://www.caifuzhu.com.cn/</link> 
	<description>财富猪java站</description> 
</image>

			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=107</link>
			<title><![CDATA[最新出炉2010暴强语录]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[java随写]]></category>
			<pubDate>Fri,05 Mar 2010 12:45:36 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=107</guid>	
		<description><![CDATA[1.知道你过得不好，我也就安心了。<br/><br/>2.这位帅哥，你好像我下一任男友<br/><br/>3.伯母你好，我是你儿子的男朋友<br/><br/>4.不要叫我宅女，请叫我居里夫人<br/><br/>5.真羡慕你这么年轻就认识我了。<br/><br/>6.最近总是失眠，16小时就醒一次。<br/><br/>7.人人都说我丑，其实我只是美得不明显。<br/><br/>8.别到处嚷嚷世界抛弃了你，世界原本就不是属于你<br/><br/>9.我们要向前看，不错过些歪瓜劣枣怎么知道什么是好<br/><br/>10.爱情是一杯酒 我小心翼翼捧给心爱的人 他不小心碰撒了 于是我兑上了水<br/><br/>11.生活不是林黛玉，不会因为忧伤而风情万种。<br/><br/>12.已经将整个青春都用来检讨青春，还要把整个生命都用来怀疑生命?<br/><br/>13.请转告王子,老娘还在披荆斩棘的路上,还有雪山未翻、大河未过、巨龙未杀、帅哥未泡……叫他继&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;续死睡吧!<br/><br/>14.人和猪的区别就是：猪一直是猪，而人有时却不是人<br/><br/>15.我爱你时，你说什么就是什么。 我不爱你时，你说你是什么。<br/><br/>16.你说...你喜欢我?其实...我一开始...其实我也...唉跟你说了吧,其实我也挺喜欢我自己的.<br/><br/>17.要不是打不过你，我早跟你翻脸了。<br/><br/>18.来世记得早点来娶我。<br/><br/>19.让我流泪的人，我一定会让你流血。<br/><br/>20.别轻易对别人说爱，别固执的将别人心门打开，又玩笑着离开。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=106</link>
			<title><![CDATA[花生壳]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[web特效]]></category>
			<pubDate>Fri,26 Feb 2010 09:43:59 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=106</guid>	
		<description><![CDATA[&lt;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34; &#34;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&#34;&gt;<br/>&lt;html xmlns=&#34;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&#34;&gt;<br/>&lt;head&gt;<br/>&lt;meta http-equiv=&#34;Content-Type&#34; content=&#34;text/html; charset=utf-8&#34; /&gt;<br/>&lt;title&gt;post 8010 test&lt;/title&gt;<br/>&lt;/head&gt;<br/>&lt;frameset rows=&#34;*&#34;&gt;<br/>&lt;frame name=&#34;main&#34; frameborder=&#34;no&#34; src=&#34;<a href="http://caifuzhu.com:8010" target="_blank">http://caifuzhu.com:8010</a>&#34;&gt;<br/>&lt;/frameset&gt;<br/>&lt;noframes&gt;&lt;body&gt;<br/>&lt;script type=&#34;text/javasctipt&#34;&gt;window.navigate(&#39;<a href="http://caifuzhu.com:8010" target="_blank">http://caifuzhu.com:8010</a>&#39;);&lt;/script&gt;<br/>&lt;/body&gt;<br/>&lt;/noframes&gt;&lt;/html&gt;<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=105</link>
			<title><![CDATA[javascipt 正则]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Thu,25 Feb 2010 17:21:23 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=105</guid>	
		<description><![CDATA[1. Regular-e&#173;xpression literal characters Character Matches<br/>Alphanumeric character Itself<br/>\0 The NUL character (\u0000)<br/>\t Tab (\u0009)<br/>\n Newline (\u000A)<br/>\v Vertical tab (\u000B)<br/>\f Form feed (\u000C)<br/>\r Carriage return (\u000D)<br/>\xnn The Latin character specified by the hexadecimal number nn; for example, \x0A is the same as \n<br/>\uxxxx The Unicode character specified by the hexadecimal number xxxx; for example, \u0009 is the same as \t<br/>\cX The control character ^X; for example, \cJ is equivalent to the newline character \n<br/> <br/>2. Regular e&#173;xpression character classes Character Matches<br/><br/>[...] Any one character between the brackets.<br/>[^...] Any one character not between the brackets.<br/>.&nbsp;&nbsp;Any character except newline o&#114; another Unicode line terminator.<br/>\w Any ASCII word character. Equivalent to [a-zA-Z0-9_].<br/>\W Any character that is not an ASCII word character. Equivalent to [^a-zA-Z0-9_].<br/>\s Any Unicode whitespace character.<br/>\S Any character that is not Unicode whitespace. Note that \w and \S are not the same thing.<br/>\d Any ASCII digit. Equivalent to [0-9].<br/>\D Any character other than an ASCII digit. Equivalent to [^0-9].<br/>[\b] A literal backspace (special case).<br/> <br/>3. Regular e&#173;xpression repetition characters Character Meaning<br/>{n,m} Match the previous item at least n times but no more than m times.<br/>{n,} Match the previous item n o&#114; more times.<br/>{n} Match exactly n occurrences of the previous item.<br/>?&nbsp;&nbsp;Match zero o&#114; one occurrences of the previous item. That is, the previous item is optional. Equivalent to {0,1}.<br/>+ Match one o&#114; more occurrences of the previous item. Equivalent to {1,}.<br/>* Match zero o&#114; more occurrences of the previous item. Equivalent to {0,}.<br/> <br/>4。 Regular e&#173;xpression alt&#101;rnation, grouping, and reference characters Character Meaning<br/>| Alt&#101;rnation. Match either the sube&#173;xpression to the left o&#114; the sube&#173;xpression to the right.<br/>(...) Grouping. Group items into a single unit that can be used with *, +, ?, |, and so on. Also remember the characters that match this group for use with later references.<br/>(?:...) Grouping only. Group items into a single unit, but do not remember the characters that match this group.<br/>\n Match the same characters that were matched when group number n was first matched. Groups are sube&#173;xpressions within (possibly nested) parentheses. Group numbers are assigned by counting left parentheses from left to right. Groups formed with (?: are not numbered.<br/> <br/>5. Regular-e&#173;xpression anchor characters Character Meaning<br/>^ Match the beginning of the string and, in multiline searches, the beginning of a line.<br/>$ Match the end of the string and, in multiline searches, the end of a line.<br/>\b Match a word boundary. That is, match the position between a \w character and a \W character o&#114; between a \w character and the beginning o&#114; end of a string. (Note, however, that [\b] matches backspace.)<br/>\B Match a position that is not a word boundary.<br/>(?=p) A positive lookahead assertion. Require that the following characters match the pattern p, but do not include those characters in the match.<br/>(?!p) A negative lookahead assertion. Require that the following characters do not match the pattern p.<br/> <br/>6. Regular-e&#173;xpression flags Character Meaning<br/>i Perform case-insensitive matching.<br/>g Perform a global matchthat is, find all matches rather than stopping after the first match.<br/>m Multiline mode. ^ matches beginning of line o&#114; beginning of string, and $ matches end of line o&#114; end of string.<br/> <br/><br/><br/>string.replace(regexp, replacement)<br/><br/><br/>Characters Replacement<br/>$1, $2, ..., $99&nbsp;&nbsp;The text that matched the 1st through 99th parenthesized sube&#173;xpression within regexp<br/>$&amp;&nbsp;&nbsp;The substring that matched regexp<br/>$&#39;&nbsp;&nbsp;The text to the left of the matched substring<br/>$&#39;&nbsp;&nbsp;The text to the right of the matched substring<br/>$$&nbsp;&nbsp;A literal dollar sign<br/> <br/>name.replace(/(\w+)\s*,\s*(\w+)/, &#34;$2 $1&#34;);<br/>text.replace(/&#34;([^&#34;]*)&#34;/g, &#34;&#39;&#39;$1&#39;&#39;&#34;);<br/>text.replace(/\b\w+\b/g, function(word) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return word.substring(0,1).toUpperCase( ) +<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;word.substring(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; });<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=104</link>
			<title><![CDATA[javascript设法提高循环的性能 ]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Thu,25 Feb 2010 17:19:29 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=104</guid>	
		<description><![CDATA[一般在javascript里对数组进行遍历一般是使用for循环，像下面一样<br/><br/> <br/><br/>var arr = [];<br/>for(var i=0; i&lt;arr.length; i++){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>这种代码最大的问题，就在于每次循环时都要通过 .操作符获取 .length，增加了开销。那么我们可以这样改进。<br/><br/> <br/><br/>var arr = [];<br/>for(var i=0, n=arr.length; i&lt;n; i++){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>这样子，先把 arr.length暂存到 n 变量中去。只在开始时获取一次。<br/><br/>但是这样就没问题了吗？貌似多定义了个无意义的变量 n 。好那继续改进<br/><br/> <br/><br/>var arr = [];<br/>for(var i=arr.length-1; i &gt; -1; i--){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>好这样子，我们把这个循环顺序倒过来，就把那个n去掉了，而使用了一个常量-1。<br/><br/> <br/><br/>如果应用场景，允许不使用 for 循环的话。我们可在使用 while代替<br/><br/> <br/><br/>善于使用这两种循环语句，以提高javascript的效率。<br/><br/> <br/><br/> <br/><br/>var arr = [];<br/>var i=arr.length-1;<br/>while(i--){<br/>&nbsp;&nbsp;//loop arr[i]<br/>}<br/> <br/><br/>或者<br/><br/> <br/><br/>var arr = [];<br/>var i=arr.length-1;<br/>do {<br/>&nbsp;&nbsp;// loop arr[i]<br/>}while(--i) <br/><br/>这样代码更简洁，效率更好，特别是如果允许先执行一次循环体的情况下，使用do while效果很明显。<br/><br/>唯一的问题是把 i 移到循环外了。 <br/><br/> <br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=103</link>
			<title><![CDATA[javascript设法提高循环的性能 ]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Thu,25 Feb 2010 17:15:25 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=103</guid>	
		<description><![CDATA[一般在javascript里对数组进行遍历一般是使用for循环，像下面一样<br/><br/> <br/><br/>var arr = [];<br/>for(var i=0; i&lt;arr.length; i++){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>这种代码最大的问题，就在于每次循环时都要通过 .操作符获取 .length，增加了开销。那么我们可以这样改进。<br/><br/> <br/><br/>var arr = [];<br/>for(var i=0, n=arr.length; i&lt;n; i++){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>这样子，先把 arr.length暂存到 n 变量中去。只在开始时获取一次。<br/><br/>但是这样就没问题了吗？貌似多定义了个无意义的变量 n 。好那继续改进<br/><br/> <br/><br/>var arr = [];<br/>for(var i=arr.length-1; i &gt; -1; i--){<br/>&nbsp;&nbsp;//loop<br/>} <br/><br/>好这样子，我们把这个循环顺序倒过来，就把那个n去掉了，而使用了一个常量-1。<br/><br/> <br/><br/>如果应用场景，允许不使用 for 循环的话。我们可在使用 while代替<br/><br/> <br/><br/>善于使用这两种循环语句，以提高javascript的效率。<br/><br/> <br/><br/> <br/><br/>var arr = [];<br/>var i=arr.length-1;<br/>while(i--){<br/>&nbsp;&nbsp;//loop arr[i]<br/>}<br/> <br/><br/>或者<br/><br/> <br/><br/>var arr = [];<br/>var i=arr.length-1;<br/>do {<br/>&nbsp;&nbsp;// loop arr[i]<br/>}while(--i) <br/><br/>这样代码更简洁，效率更好，特别是如果允许先执行一次循环体的情况下，使用do while效果很明显。<br/><br/>唯一的问题是把 i 移到循环外了。 <br/><br/> <br/><br/>Tag标签: javascript<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=102</link>
			<title><![CDATA[强制关闭网页不征求浏览器确认框]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Thu,25 Feb 2010 17:14:45 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=102</guid>	
		<description><![CDATA[window.opener=null;&nbsp;&nbsp;&nbsp;&nbsp;<br/>window.open(&#34;&#34;,&#39;_self&#39;,&#34;&#34;);&nbsp;&nbsp;&nbsp;&nbsp;<br/>window.close();&nbsp;&nbsp;]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=101</link>
			<title><![CDATA[nginx+tomcat架构下获取真实IP的办法 ]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[java随写]]></category>
			<pubDate>Sun,14 Feb 2010 13:07:50 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=101</guid>	
		<description><![CDATA[第一步：在nginx.conf中配置反向代理时把真实IP带上，例如：<br/><br/>server { <br/>&nbsp;&nbsp;&nbsp;&nbsp;listen 80; <br/>&nbsp;&nbsp;&nbsp;&nbsp;server_name&nbsp;&nbsp;boyan.com; <br/>&nbsp;&nbsp;&nbsp;&nbsp;location ~ ^/(WEB-INF)/ { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deny all; <br/>&nbsp;&nbsp;&nbsp;&nbsp; } <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;location / { <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_pass <a href="http://localhost:8888" target="_blank">http://localhost:8888</a>; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;proxy_set_header&nbsp;&nbsp;X-Real-IP&nbsp;&nbsp;$remote_addr;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;}<br/><br/>第二步：应用程序中用 String ip = request.getHeader(&#34;X-Real-IP&#34;);替代String ip = request.getRemoteAddr();即可<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=100</link>
			<title><![CDATA[eclipse插件开发:使用AST生成类]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[java随写]]></category>
			<pubDate>Sun,14 Feb 2010 13:06:55 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=100</guid>	
		<description><![CDATA[本代码演示如何通过AST生成一个完整的类, 最终生成的代码比较乱, 编译无法通过,重点在于对AST的使用, 无需考虑最后生成的结果.<br/><br/>以下是最终生成的代码(语法有严重错误, 请不要计较这些):<br/>package com.aptech.lzh;<br/><br/>import java.util.Date;<br/>import java.util.Random;<br/><br/>public class Program {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] arg) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Program program = new Program();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String r = program.getString(&#34;中国&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(r);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public Program(int a, int[] b, final Integer c) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(null);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public String getString(String p) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String newString = new String(&#34;初始值&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newString = &#34;你好&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String result = newString.indexOf(&#34;值&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newString = name + &#34;你好&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return newString;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public String isOdd(int a) throws NullPointerException, Exception {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (a &lt; 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throw new Exception(&#34;数字不能为负数&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (a % 2 == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#34;偶数&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(&#34;完&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return &#34;奇数&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/>源代码:<br/>package ast.test.demo;<br/><br/>import o&#114;g.eclipse.jdt.core.dom.AST;<br/>import o&#114;g.eclipse.jdt.core.dom.Assignment;<br/>import o&#114;g.eclipse.jdt.core.dom.Block;<br/>import o&#114;g.eclipse.jdt.core.dom.ClassInstanceCreation;<br/>import o&#114;g.eclipse.jdt.core.dom.CompilationUnit;<br/>import o&#114;g.eclipse.jdt.core.dom.ExpressionStatement;<br/>import o&#114;g.eclipse.jdt.core.dom.IfStatement;<br/>import o&#114;g.eclipse.jdt.core.dom.ImportDeclaration;<br/>import o&#114;g.eclipse.jdt.core.dom.InfixExpression;<br/>import o&#114;g.eclipse.jdt.core.dom.MethodDeclaration;<br/>import o&#114;g.eclipse.jdt.core.dom.MethodInvocation;<br/>import o&#114;g.eclipse.jdt.core.dom.Modifier;<br/>import o&#114;g.eclipse.jdt.core.dom.NumberLiteral;<br/>import o&#114;g.eclipse.jdt.core.dom.PackageDeclaration;<br/>import o&#114;g.eclipse.jdt.core.dom.PrimitiveType;<br/>import o&#114;g.eclipse.jdt.core.dom.ReturnStatement;<br/>import o&#114;g.eclipse.jdt.core.dom.SingleVariableDeclaration;<br/>import o&#114;g.eclipse.jdt.core.dom.StringLiteral;<br/>import o&#114;g.eclipse.jdt.core.dom.SuperConstructorInvocation;<br/>import o&#114;g.eclipse.jdt.core.dom.ThrowStatement;<br/>import o&#114;g.eclipse.jdt.core.dom.TypeDeclaration;<br/>import o&#114;g.eclipse.jdt.core.dom.TypeLiteral;<br/>import o&#114;g.eclipse.jdt.core.dom.VariableDeclarationFragment;<br/>import o&#114;g.eclipse.jdt.core.dom.VariableDeclarationStatement;<br/>import o&#114;g.eclipse.jdt.core.dom.Assignment.Operator;<br/>import o&#114;g.eclipse.jdt.core.dom.Modifier.ModifierKeyword;<br/><br/>public class Demo {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AST ast = AST.newAST(AST.JLS3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CompilationUnit compilationUnit = ast.newCompilationUnit();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建类<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TypeDeclaration programClass = ast.newTypeDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;programClass.setName(ast.newSimpleName(&#34;Program&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;programClass.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compilationUnit.types().add(programClass);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建包<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PackageDeclaration packageDeclaration = ast.newPackageDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;packageDeclaration.setName(ast.newName(&#34;com.aptech.lzh&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compilationUnit.setPackage(packageDeclaration);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//要导入的包<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[] imports = {&#34;java.util.Date&#34;, &#34;java.util.Random&#34;};<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(String imp : imports){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImportDeclaration importDeclaration = ast.newImportDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;importDeclaration.setName(ast.newName(imp));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compilationUnit.imports().add(importDeclaration);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//创建一个main方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodDeclaration main = ast.newMethodDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.setName(ast.newSimpleName(&#34;main&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.modifiers().add(ast.newModifier(ModifierKeyword.STATIC_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;programClass.bodyDeclarations().add(main);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Block mainBlock = ast.newBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.setBody(mainBlock);<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;//给main方法定义String[]参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration mainParameter = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainParameter.setName(ast.newSimpleName(&#34;arg&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainParameter.setType(ast.newArrayType(ast.newSimpleType(ast.newName(&#34;String&#34;))));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;main.parameters().add(mainParameter);<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;//创建Pragram对象: Program program=new Program();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationFragment fragment = ast.newVariableDeclarationFragment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.setName(ast.newSimpleName(&#34;program&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationStatement statement = ast.newVariableDeclarationStatement(fragment);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statement.setType(ast.newSimpleType(ast.newSimpleName(&#34;Program&#34;)));<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;ClassInstanceCreation classInstanceCreation = ast.newClassInstanceCreation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classInstanceCreation.setType(ast.newSimpleType(ast.newSimpleName(&#34;Program&#34;)));<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;fragment.setInitializer(classInstanceCreation);<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;mainBlock.statements().add(statement);<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;//调用getString方法:String r = program.getString(&#34;中国&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodInvocation methodInvocation = ast.newMethodInvocation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setExpression(ast.newSimpleName(&#34;program&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setName(ast.newSimpleName(&#34;getString&#34;));<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;//String参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral.setLiteralValue(&#34;中国&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.arguments().add(stringLiteral);<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;//创建变量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationFragment fragment2 = ast.newVariableDeclarationFragment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment2.setName(ast.newSimpleName(&#34;r&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationStatement statement3 = ast.newVariableDeclarationStatement(fragment2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statement3.setType(ast.newSimpleType(ast.newSimpleName(&#34;String&#34;)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment2.setInitializer(methodInvocation);<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;mainBlock.statements().add(statement3);<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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//输出r的值: System.out.println(r);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodInvocation methodInvocation2 = ast.newMethodInvocation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation2.setExpression(ast.newName(&#34;System.out&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation2.setName(ast.newSimpleName(&#34;println&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation2.arguments().add(ast.newSimpleName(&#34;r&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpressionStatement statement2 = ast.newExpressionStatement(methodInvocation2);<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;mainBlock.statements().add(statement2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//构造方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodDeclaration constructorMethod = ast.newMethodDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.setConstructor(true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.setName(ast.newSimpleName(&#34;Program&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));<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;//基本类型的参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration p1 = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.setName(ast.newSimpleName(&#34;a&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p1.setType(ast.newPrimitiveType(PrimitiveType.INT));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//int[]类型的参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration p2 = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2.setName(ast.newSimpleName(&#34;b&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p2.setType(ast.newArrayType(ast.newPrimitiveType(PrimitiveType.INT)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//引用类型的参数<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration p3 = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p3.setName(ast.newSimpleName(&#34;c&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p3.setType(ast.newSimpleType(ast.newName(&#34;Integer&#34;)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p3.modifiers().add(ast.newModifier(ModifierKeyword.FINAL_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.parameters().add(p1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.parameters().add(p2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.parameters().add(p3);<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;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Block constructBlock = ast.newBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructorMethod.setBody(constructBlock);<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;programClass.bodyDeclarations().add(constructorMethod);<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;SuperConstructorInvocation superConstructorInvocation = ast.newSuperConstructorInvocation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;constructBlock.statements().add(superConstructorInvocation);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;superConstructorInvocation.arguments().add(ast.newNullLiteral());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//*定义一个方法,形如:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public String getString(String name){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String newString = name + &#34;你好&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return newString;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodDeclaration getString = ast.newMethodDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getString.setName(ast.newSimpleName(&#34;getString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getString.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration p = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setName(ast.newSimpleName(&#34;p&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p.setType(ast.newSimpleType(ast.newName(&#34;String&#34;)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getString.parameters().add(p);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getString.setReturnType2(ast.newSimpleType(ast.newSimpleName(&#34;String&#34;)));<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;<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;Block block = ast.newBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getString.setBody(block);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;programClass.bodyDeclarations().add(getString);<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;//方法内容----定义String变量<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationFragment fragment = ast.newVariableDeclarationFragment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.setName(ast.newSimpleName(&#34;newString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationStatement statement = ast.newVariableDeclarationStatement(fragment);<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;//String newString = &#34;初始值&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/**//*StringLiteral stringLiteral2 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral2.setLiteralValue(&#34;初始值&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.setInitializer(stringLiteral2);*/<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;ClassInstanceCreation classInstanceCreation = ast.newClassInstanceCreation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classInstanceCreation.setType(ast.newSimpleType(ast.newName(&#34;String&#34;)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SingleVariableDeclaration p1 = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral3 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral3.setLiteralValue(&#34;初始值&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classInstanceCreation.arguments().add(stringLiteral3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment.setInitializer(classInstanceCreation);<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;statement.setType(ast.newSimpleType(ast.newName(&#34;String&#34;)));<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;Assignment assignment = ast.newAssignment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment.setLeftHandSide(ast.newSimpleName(&#34;newString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral.setLiteralValue(&#34;你好&#34;);<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;assignment.setRightHandSide(stringLiteral);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment.setOperator(Operator.ASSIGN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpressionStatement statement2 = ast.newExpressionStatement(assignment);<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;block.statements().add(statement);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block.statements().add(statement2);<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;//方法调用<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodInvocation methodInvocation = ast.newMethodInvocation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setExpression(ast.newName(&#34;newString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setName(ast.newSimpleName(&#34;index&#34;)); //方法名<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral2 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral2.setLiteralValue(&#34;值&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.arguments().add(stringLiteral2);<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;VariableDeclarationFragment fragment2 = ast.newVariableDeclarationFragment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment2.setInitializer(methodInvocation);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fragment2.setName(ast.newSimpleName(&#34;result&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VariableDeclarationStatement statement3 = ast.newVariableDeclarationStatement(fragment2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;statement3.setType(ast.newSimpleType(ast.newName(&#34;String&#34;)));<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;block.statements().add(statement3);<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;StringLiteral stringLiteral4 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral4.setLiteralValue(&#34;你好&#34;);<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;InfixExpression infixExpression = ast.newInfixExpression();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setLeftOperand(ast.newName(&#34;name&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setOperator(org.eclipse.jdt.core.dom.InfixExpression.Operator.PLUS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setRightOperand(stringLiteral4);<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;Assignment assignment2 = ast.newAssignment();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment2.setLeftHandSide(ast.newSimpleName(&#34;newString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment2.setOperator(Operator.ASSIGN);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assignment2.setRightHandSide(infixExpression);<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;ExpressionStatement statement4 = ast.newExpressionStatement(assignment2);<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;block.statements().add(statement4);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnStatement rs = ast.newReturnStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.setExpression(ast.newName(&#34;newString&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;block.statements().add(rs);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/** *//**<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 定义一个方法,形如:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * public String isOdd(int a) throws NullPointerException, Exception{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; if(a &lt; 0) throw new Exception(&#34;数字不能为负数&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; if(a % 2 == 0){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#34;偶数&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp; }else{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(&#34;完&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return &#34;奇数&#34;;<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;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodDeclaration methodDeclaration = ast.newMethodDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.setName(ast.newSimpleName(&#34;isOdd&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.setReturnType2(ast.newSimpleType(ast.newSimpleName(&#34;String&#34;)));<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;SingleVariableDeclaration singleVariableDeclaration = ast.newSingleVariableDeclaration();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;singleVariableDeclaration.setName(ast.newSimpleName(&#34;a&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;singleVariableDeclaration.setType(ast.newPrimitiveType(PrimitiveType.INT));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.parameters().add(singleVariableDeclaration);<br/><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;methodDeclaration.thrownExceptions().add(ast.newSimpleName(&#34;NullPointerException&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.thrownExceptions().add(ast.newSimpleName(&#34;Exception&#34;));<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;//创建块{}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Block isOddBlock = ast.newBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodDeclaration.setBody(isOddBlock);<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;//创建if与异常<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IfStatement ifStatement = ast.newIfStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//表达式 a &lt; 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InfixExpression infixExpression = ast.newInfixExpression();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setLeftOperand(ast.newSimpleName(&#34;a&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setOperator(org.eclipse.jdt.core.dom.InfixExpression.Operator.LESS);<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;NumberLiteral numberLiteral = ast.newNumberLiteral(&#34;0&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression.setRightOperand(numberLiteral);<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;ifStatement.setExpression(infixExpression);<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;//设置if中的内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ThrowStatement throwStatement = ast.newThrowStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClassInstanceCreation classInstanceCreation = ast.newClassInstanceCreation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classInstanceCreation.setType(ast.newSimpleType(ast.newSimpleName(&#34;Exception&#34;)));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral.setLiteralValue(&#34;数字不能为负数&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;classInstanceCreation.arguments().add(stringLiteral);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;throwStatement.setExpression(classInstanceCreation);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifStatement.setThenStatement(throwStatement);<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;//if(a % 2 == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IfStatement ifStatement2 = ast.newIfStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InfixExpression infixExpression2 = ast.newInfixExpression();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression2.setLeftOperand(ast.newSimpleName(&#34;a&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression2.setOperator(org.eclipse.jdt.core.dom.InfixExpression.Operator.REMAINDER);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumberLiteral numberLiteral2 = ast.newNumberLiteral(&#34;2&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression2.setRightOperand(numberLiteral2);<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;InfixExpression infixExpression3 = ast.newInfixExpression();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression3.setLeftOperand(infixExpression2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression3.setOperator(org.eclipse.jdt.core.dom.InfixExpression.Operator.EQUALS);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumberLiteral numberLiteral3 = ast.newNumberLiteral(&#34;0&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;infixExpression3.setRightOperand(numberLiteral3);<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;ifStatement2.setExpression(infixExpression3);<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;//return &#34;偶数&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnStatement returnStatement = ast.newReturnStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral2 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral2.setLiteralValue(&#34;偶数&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnStatement.setExpression(stringLiteral2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifStatement2.setThenStatement(returnStatement);<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;//else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Block elseBlock = ast.newBlock();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MethodInvocation methodInvocation = ast.newMethodInvocation();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setExpression(ast.newName(&#34;System.out&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.setName(ast.newSimpleName(&#34;println&#34;));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral4 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral4.setLiteralValue(&#34;完&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;methodInvocation.arguments().add(stringLiteral4);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ExpressionStatement statement = ast.newExpressionStatement(methodInvocation);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseBlock.statements().add(statement);<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;ReturnStatement returnStatement2 = ast.newReturnStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StringLiteral stringLiteral3 = ast.newStringLiteral();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stringLiteral3.setLiteralValue(&#34;奇数&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returnStatement2.setExpression(stringLiteral3);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elseBlock.statements().add(returnStatement2);<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;ifStatement2.setElseStatement(elseBlock);<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;isOddBlock.statements().add(ifStatement);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isOddBlock.statements().add(ifStatement2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;programClass.bodyDeclarations().add(methodDeclaration);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(compilationUnit.toString());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=99</link>
			<title><![CDATA[Android文字跑马灯控件]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Sun,14 Feb 2010 13:05:41 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=99</guid>	
		<description><![CDATA[先说声 大家新年快乐哈，明天就要进入2010年了，对我来说是很意义的一年，同时也是很重要的一年。新的气象，新的工作，新的挑战。保佑自己，相信自己！不啰嗦了，切入正题。<br/><br/>最近在开发一个应用，需要用到文本的跑马灯效果，图省事，在网上找，但老半天都找不到，后来自己写了一个，很简单，代码如下：<br/><br/>import android.content.Context;<br/>import android.graphics.Canvas;<br/>import android.graphics.Paint;<br/>import android.util.AttributeSet;<br/>import android.view.Display;<br/>import android.view.View;<br/>import android.view.WindowManager;<br/>import android.view.View.OnClickListener;<br/>import android.widget.TextView;<br/><br/>/** *//**<br/> * 单行文本跑马灯控件<br/> * @author tigertian<br/> *<br/> */<br/>public class AutoScrollTextView extends TextView implements OnClickListener {<br/>&nbsp;&nbsp;&nbsp;&nbsp;private float textLength = 0f;//文本长度<br/>&nbsp;&nbsp;&nbsp;&nbsp;private float viewWidth = 0f;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private float step = 0f;//文字的横坐标<br/>&nbsp;&nbsp;&nbsp;&nbsp;private float y = 0f;//文字的纵坐标<br/>&nbsp;&nbsp;&nbsp;&nbsp;private boolean isStarting = false;//是否开始滚动<br/>&nbsp;&nbsp;&nbsp;&nbsp;private Paint paint = null;//绘图样式<br/>&nbsp;&nbsp;&nbsp;&nbsp;private String text = &#34;&#34;;//文本内容<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public AutoScrollTextView(Context context) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(context);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initView();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public AutoScrollTextView(Context context, AttributeSet attrs) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(context, attrs);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initView();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;super(context, attrs, defStyle);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initView();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/** *//**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 初始化控件<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;private void initView()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setOnClickListener(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/** *//**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 文本初始化，每次更改文本内容或者文本效果等之后都需要重新初始化一下<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void init(WindowManager windowManager)<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;paint = getPaint();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;text = getText().toString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;textLength = paint.measureText(text);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewWidth = getWidth();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(viewWidth == 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(windowManager != null)<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;Display display = windowManager.getDefaultDisplay();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;viewWidth = display.getWidth();<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;&nbsp;&nbsp;&nbsp;&nbsp;step = viewWidth;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y = getTextSize() + getPaddingTop();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;/** *//**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 开始滚动<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void startScroll()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isStarting = true;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invalidate();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;/** *//**<br/>&nbsp;&nbsp;&nbsp;&nbsp; * 停止滚动<br/>&nbsp;&nbsp;&nbsp;&nbsp; */<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void stopScroll()<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isStarting = false;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invalidate();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void onDraw(Canvas canvas) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canvas.drawText(text, step, y, paint);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!isStarting)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;step -= 0.5;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(step &lt; -textLength)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;step = viewWidth;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;invalidate();<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;@Override<br/>&nbsp;&nbsp;&nbsp;&nbsp;public void onClick(View v) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(isStarting)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stopScroll();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;startScroll();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>}<br/>实现了宽度的判断，文本自动滚动及开始和停止滚动等功能。<br/><br/>在UI xml中的配置如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&lt;cn.tigertian.ui.AutoScrollTextView android:id=&#34;@+id/TextViewNotice&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:layout_height=&#34;30px&#34; android:layout_width=&#34;fill_parent&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:text=&#34;@string/test_notice_1&#34; android:textColor=&#34;#000&#34; android:inputType=&#34;text&#34;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;android:background=&#34;#EEE&#34; android:textSize=&#34;20px&#34;&gt;&lt;/cn.tigertian.ui.AutoScrollTextView&gt;<br/><br/>在Activity中的使用方法如下：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动公告滚动条<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoScrollTextView = (AutoScrollTextView)findViewById(R.id.TextViewNotice);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoScrollTextView.init(getWindowManager());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;autoScrollTextView.startScroll();如果想改变跑马灯的文字内容或者文字效果，则在调用完setText方法之后，需要再调用一下init(WindowManager windowManager)方法，重新进行初始化和相关参数的计算。<br/><br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.caifuzhu.com.cn/default.asp?id=98</link>
			<title><![CDATA[使用Firefox无须解压缩直接浏览]]></title>
			<author>zhouhaizhe@126.com(admin)</author>
			<category><![CDATA[JavaScript]]></category>
			<pubDate>Sun,14 Feb 2010 13:04:45 +0800</pubDate>
			<guid>http://www.caifuzhu.com.cn/default.asp?id=98</guid>	
		<description><![CDATA[使用Firefox无须解压缩直接浏览jar/zip文件中的javadoc或html文件<br/><br/> <br/><br/>经测试只有Firefox支持此用法, 再也不用解压缩超大的文档压缩包来看文档了!<br/><br/>地址栏输入: jar:file:///C:/xxxx.zip!/javadocs/index.html<br/><br/>即可.<br/><br/> <br/><br/>来源: <a href="http://jetbrains.net/jira/browse/IDEA-21454?disableRedirect" target="_blank">http://jetbrains.net/jira/browse/IDEA-21454?disableRedirect</a><br/><br/>]]></description>
		</item>
		
</channel>
</rss>