
工程目錄
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>android</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 第一 這個過濾器與Struts的核心過濾器協同工作,以便更容易與sitemesh整合 -->
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<!-- 第二 sitemesh的過濾器,同時也整合了Freemarker -->
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
</filter>
<!-- 第三 struts2過濾器 -->
<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--
使FreeMarker模塊能夠使用strut2標簽,使用方式:<#assign
s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
-->
<servlet>
<servlet-name>JspSupportservlet</servlet-name>
<servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>sitemesh-freemarker</servlet-name>
<servlet-class>com.opensymphony.module.sitemesh.freemarker.FreemarkerDecoratorServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>default_encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sitemesh-freemarker</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.convention.default.parent.package" value="crud-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.package.locators.basePackage" value="org.david.android" />
<constant name="struts.convention.result.path" value="/WEB-INF/web" />
<!-- 用于CRUD Action的parent package -->
<package name="crud-default" extends="convention-default">
<!-- 基于paramsPrepareParamsStack,
增加store interceptor保證actionMessage在redirect后不會丟失 -->
<interceptors>
<interceptor-stack name="crudStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="crudStack" />
</package>
<!--
使用Convention插件,實現約定大于配置的零配置文件風格.
特殊的Result路徑在Action類中使用@Result設定.
-->
</struts>
decorators.xml
<?xml version="1.0" encoding="UTF-8"?>
<decorators defaultdir="/WEB-INF/decorators">
<decorator name="main" page="main.ftl">
<pattern>/*</pattern>
</decorator>
</decorators>
HelloWorldAction.java
package org.david.android.action.user;
public class HelloWorldAction {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String execute(){
this.message = "ITdavid";
return "success";
}
}
main.ftl
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>${title}</title>
</head>
<body>
<div>
hello
${body}
</body>
</html>
hello-world.ftl
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="layout" content="main"/>
<title>Insert title here</title>
</head>
<body>
Hello ${message!}
</body>
</html>
posted @
2009-11-29 17:05 大衛 閱讀(3295) |
評論 (4) |
編輯 收藏
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>fmtest</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/service-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<display-name>Stripes Filter</display-name>
<filter-name>StripesFilter</filter-name>
<filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
<init-param>
<param-name>ActionResolver.Packages</param-name>
<param-value>net.sourceforge.stripes.examples</param-value>
</init-param>
<init-param>
<param-name>Interceptor.Classes</param-name>
<param-value>net.sourceforge.stripes.integration.spring.SpringInterceptor</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>StripesFilter</filter-name>
<servlet-name>StripesDispatcher</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>StripesDispatcher</servlet-name>
<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>Freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>template_update_delay</param-name>
<param-value>0</param-value> <!-- 0 is for dev only! Use higher value otherwise. -->
</init-param>
<init-param>
<param-name>DefaultEncoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Freemarker</servlet-name>
<url-pattern>*.ftl</url-pattern>
</servlet-mapping>
</web-app>
posted @
2009-11-25 15:45 大衛 閱讀(1756) |
評論 (2) |
編輯 收藏
解決FreeMarker中文亂碼問題。
在web.xml中配置如下:
<servlet>
<servlet-name>Freemarker</servlet-name>
<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
<init-param>
<param-name>TemplatePath</param-name>
<param-value>/</param-value>
</init-param>
<init-param>
<param-name>template_update_delay</param-name>
<param-value>3600</param-value> <!-- 0 值僅用于開發環境,生產環境請設置為3600或者更大。 -->
</init-param>
<init-param>
<param-name>DefaultEncoding</param-name> <!-- 解決中文編碼問題 -->
<param-value>utf-8</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
--------------------
PES準高手
posted @
2009-11-25 15:02 大衛 閱讀(5067) |
評論 (1) |
編輯 收藏
RT
太保守會影響效率,當某些代碼邏輯是認為可控制時,不用保守。
posted @
2009-09-28 10:08 大衛 閱讀(430) |
評論 (0) |
編輯 收藏
關于類的劃分,上層應該按業務領域含義劃分,下層應該按實現細節劃分。
posted @
2009-09-27 12:10 大衛 閱讀(414) |
評論 (0) |
編輯 收藏
其實很簡單,就把標記@Id放在主鍵(非自增)上就OK了。
posted @
2009-02-25 14:12 大衛 閱讀(2555) |
評論 (0) |
編輯 收藏
摘要: 在設計數據庫表的時候,往往會設計出帶有復合主鍵的表,即表的記錄由多個字段聯合標識,如:
表
CREATE TABLE TB_HOUR_DATA
(
STAT_DATE DATE &...
閱讀全文
posted @
2009-02-25 14:10 大衛 閱讀(3005) |
評論 (2) |
編輯 收藏
如何調用執行iframe中的方法?如下:
document.getElementById("iframeId").contentWindow.functionName();
posted @
2008-10-07 14:50 大衛 閱讀(5359) |
評論 (5) |
編輯 收藏
http://www.nciku.com/
這個網站里面的手寫輸入真棒!
posted @
2008-09-19 14:15 大衛 閱讀(1275) |
評論 (1) |
編輯 收藏
最近用smartdraw畫了一些結構圖,感覺比visio之類好用,而且也包羅萬象,推薦一下!
下載地址:http://soft.mumayi.net/downinfo/3393.html
posted @
2008-09-18 14:04 大衛 閱讀(1854) |
評論 (2) |
編輯 收藏

/**//* 判斷是否含有GBK以外的特殊字符 */
boolean isGBK(String s) throws UnsupportedEncodingException


{
if(s.equals(new String(s.getBytes("gbk"))))
return true;
else
return false;
}
posted @
2008-09-16 13:04 大衛 閱讀(878) |
評論 (1) |
編輯 收藏
使用這個組合,感覺還是很方便靈活的。
1、將struts2的json插件加入web工程的lib,jsonplugin的下載地址:
http://code.google.com/p/jsonplugin/downloads/list
2、struts.xml添加專為ajax使用的package
<package name="ajax" extends="json-default">
<action name="ajaxRequest"
class="org.david.struts2.HelloWorld">
<result type="json"></result>
</action>
</package>
3、helloworld.jsp
<SCRIPT type="text/javascript" src="js/jquery-1.2.6.min.js"></script>

<SCRIPT type="text/javascript">
function clickButton()

{
var url = 'ajaxRequest.action';

var params =
{
name:$('#name').attr('value')
};
jQuery.post(url, params, callbackFun, 'json');
}
function callbackFun(data)

{
alert(data.result);//對應HelloWorld類的message屬性
//獲取數據后渲染頁面
}
</SCRIPT>




<input id="name" type="text">
<input type="button" value="ok" onclick="javascript:clickButton();">
4、HelloWorld.java
package org.david.struts2;


public class HelloWorld
{

private String name;
private String result;

// ajax請求參數賦值

public void setName(String name)
{
this.name = name;
}

// ajax返回結果

public String getResult()
{
return result;
}


public String execute()
{
this.result = "Hello! " + this.name + ".";
return "success";
}

}
posted @
2008-09-07 23:07 大衛 閱讀(41960) |
評論 (17) |
編輯 收藏
鼠標手型代碼:
this.style.cursor='pointer'
不要用hand,否則firefox無效。
posted @
2008-08-01 17:03 大衛 閱讀(2342) |
評論 (1) |
編輯 收藏
word-wrap:break-word 在firefox中不會起作用,以下是解決辦法:
完整的css代碼為
word-wrap:break-word; overflow:hidden;
這段代碼應添加到td標簽的樣式中。另外,應該在外層的table標簽中添加樣式
table-layout:fixed;
posted @
2008-07-11 13:34 大衛 閱讀(2109) |
評論 (1) |
編輯 收藏
(.|\s)*
posted @
2008-06-23 14:49 大衛 閱讀(925) |
評論 (0) |
編輯 收藏
按照下面做法,終于成功了!慶祝,紀念......
背景:某個系統的mysql數據庫dnname采用默認的latin1字符集,系統升級需要將所有數據轉換成utf-8格式,目標數據庫為newdbname(建庫時使用utf8)
方法一:
步驟一 命令行執行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql
步驟二 將 dbname.sql文件中的create table語句的CHARSET=latin1改為CHARSET=utf8
步驟三 在dbname.sql文件中的insert語句之前加一條'set names utf8;'
步驟四 將dbname.sql轉碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無BOM)格式
步驟五 命令行執行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql
總結:這種方法有個致命之處就是當數據中有大量中文字符和其他特殊符號字符時,很有可能導致在[步驟五]時報錯導致無法正常導入數據,如果數據庫比較大可以分別對每張表執行上述步驟
方法二(推薦大家使用):
為了解決第一種方法中總結時說到的問題,在網上苦苦查找了一天資料才東拼西湊的搞出一個比較穩妥的解決方法
步驟一 將待導出的數據表的表結構導出(可以用Phpmyadmin、mysqldump等,很簡單就不說了),然后將導出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目標庫newdbname中執行該create table語句把表結構建好,接下來開始導出-導入數據。命令:
./mysqldump -d DB_Dig > /usr/local/tmp/tables.sql
步驟二 命令行:進入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname
步驟三 執行SQL select * from tbname into outfile '/usr/local/tbname.sql';
步驟四 將tbname.sql轉碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無BOM)格式
步驟五 在mysql命令行下執行語句 set character_set_database=utf8; 注:設置mysql的環境變量,這樣mysql在下一步讀取sql文件時將以utf8的形式去解釋該文件內容
步驟六 在mysql命令行下執行語句 load data infile 'tbname.sql' into table newdbname.tbname;
注意:千萬不要忘了第四步
采用第二種方法,所有數據均正常導入,且格式轉換成功沒有亂碼。
參考:http://blog.csdn.net/guoguo1980/archive/2008/01/28/2070701.aspx
--------------------
WE準高手
posted @
2008-06-11 16:54 大衛 閱讀(8969) |
評論 (8) |
編輯 收藏
編譯:
運行junit:
java -cp ../lib/junit.jar:../lib/j2ee.jar:. junit.textui.TestRunner com.chinaren.common.ToolKitTest
posted @
2008-06-10 18:32 大衛 閱讀(1197) |
評論 (0) |
編輯 收藏
build.xml
1
<?xml version="1.0"?>
2
<project name="anttest" default="run">
3
<property name="build.path" value="build/classes/"/>
4
<path id="compile.classpath">
5
<fileset dir="lib">
6
<include name="*.jar"/>
7
</fileset>
8
</path>
9
10
<target name="init">
11
<mkdir dir="${build.path}" />
12
<mkdir dir="dist" />
13
</target>
14
<target name="compile" depends="init">
15
<javac srcdir="src/" destdir="${build.path}" classpath="${build.path}">
16
<classpath refid="compile.classpath"/>
17
</javac>
18
<echo>compilation complete!</echo>
19
</target>
20
<target name="run" depends="compile">
21
<java classname="org.test.work.HelloWorld" classpath="${build.path}" />
22
<echo>Run complete!</echo>
23
</target>
24
25
<target name="test" depends="compile">
26
<junit printsummary="on" haltonfailure="true" showoutput="true">
27
<classpath refid="compile.classpath"/>
28
<classpath path="${build.path}"/>
29
<formatter type="xml" />
30
<test name="org.test.work.HelloWorldTest"/>
31
</junit>
32
</target>
33
34
</project>
HelloWorld.java
1
package org.test.work;
2
3
public class HelloWorld
{
4
5
public String showMessage()
{
6
return "Hello world!!!";
7
}
8
9
public static void main(String[] args)
{
10
11
System.out.println("Hello world!!!");
12
}
13
}
HelloWorldTest.java
1
package org.test.work;
2
3
import static org.junit.Assert.*;
4
import org.junit.*;
5
6
import org.test.work.HelloWorld;
7
8
public class HelloWorldTest
{
9
10
private static HelloWorld hw = null;
11
12
@BeforeClass
13
public static void setUp()
{
14
hw = new HelloWorld();
15
}
16
17
@Test
18
public void showHelloWorld()
{
19
assertEquals(hw.showMessage(),"Hello world!!!");
20
}
21
22
@AfterClass
23
public static void tearDown()
{
24
hw = null;
25
}
26
27
}
posted @
2008-06-09 20:24 大衛 閱讀(429) |
評論 (0) |
編輯 收藏
JSP+jQuery+Spring+iBatis
posted @
2008-05-29 21:06 大衛 閱讀(272) |
評論 (0) |
編輯 收藏
編譯:
1
D:\je-3.2.76\examples\je>javac -classpath ..\..\lib\je-3.2.76.jar .\SimpleExample.java
執行:
D:\je-3.2.76\examples>java -classpath .\;..\lib\je-3.2.76.jar je.SimpleExample
posted @
2008-05-07 15:28 大衛 閱讀(455) |
評論 (1) |
編輯 收藏
超級簡單的一段代碼,通過正則表達式獲取字符串中某部分的值,代碼:
1
/** *//**
2
* 這段代碼就是要獲取到字符串"2008-05-10"的月份值及日期
3
*/
4
5
Pattern pattern = Pattern.compile("[0-9]{4}-([0-9]{1,2})-([0-9]{1,2})");//括號用于組獲取
6
Matcher matcher = pattern.matcher("2008-05-10");
7
8
int i = 0;
9
//循環只運行了一次
10
while(matcher.find())
11
{
12
System.out.println(++i);
13
System.out.println(matcher.group(0));//組0為全部串值
14
System.out.println(matcher.group(1));//pattern模式中中間的括號中的為組1
15
System.out.println(matcher.group(2));//pattern模式中后面的括號中的為組2
16
}
posted @
2008-05-05 18:16 大衛 閱讀(1078) |
評論 (0) |
編輯 收藏
執行如下批處理:
1
@echo off
2
echo 正在清除系統垃圾文件,請稍等
3
del /f /s /q %systemdrive%\*.tmp
4
del /f /s /q %systemdrive%\*._mp
5
del /f /s /q %systemdrive%\*.log
6
del /f /s /q %systemdrive%\*.gid
7
del /f /s /q %systemdrive%\*.chk
8
del /f /s /q %systemdrive%\*.old
9
del /f /s /q %systemdrive%\recycled\*.*
10
del /f /s /q %windir%\*.bak
11
del /f /s /q %windir%\prefetch\*.*
12
rd /s /q %windir%\temp & md %windir%\temp
13
del /f /q %userprofile%\小甜餅s\*.*
14
del /f /q %userprofile%\recent\*.*
15
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
16
del /f /s /q "%userprofile%\Local Settings\Temp\*.*"
17
del /f /s /q "%userprofile%\recent\*.*"
18
echo 清除系統LJ完成!
19
echo. & pause
絕對安全!
--------------------
WE準高手
posted @
2008-03-30 18:22 大衛 閱讀(1646) |
評論 (8) |
編輯 收藏
數據格式:
1
var folders=[
{'folderId':'1','folderName':'收信箱'},
{'folderId':'2','folderName':'發信箱'}];
2
3
//用于下拉列表的store
4
var foldersJsonStore = new Ext.data.SimpleStore(
{
5
fields: [
{name: 'folderId', mapping:'folderId'},
{name: 'folderName', mapping:'folderName'}],
6
data: folders
7
});
刷新數據:
1
foldersJsonStore.loadData(folders);
下拉框組件:
1
var combo = new Ext.form.ComboBox(
{
2
fieldLabel: '文件夾',
3
name: 'folderMoveTo',
4
store: foldersJsonStore,
5
displayField: 'folderName',
6
valueField: 'folderId',
7
mode: 'local',
8
typeAhead: true, //自動將第一個搜索到的選項補全輸入
9
triggerAction: 'all',
10
emptyText: '全部',
11
selectOnFocus: true,
12
forceSelection: true
13
})
--------------------
WE準高手
posted @
2008-03-28 15:07 大衛 閱讀(5630) |
評論 (4) |
編輯 收藏
摘要: 在使用Ext與DWR框架時,我們往往會用到GridPanel組件搭配PagingToolbar組件來實現翻頁數據列表。翻頁的時候每一頁都要從后臺獲取該頁的數據列表信息。
在解決此問題時,花了不少時間,看過不少前人的代碼,終于成功了!共享之。
關鍵代碼如下:
Store為:
1var ds = new Ext.data.Store({
...
閱讀全文
posted @
2008-03-20 13:51 大衛 閱讀(6944) |
評論 (1) |
編輯 收藏
一、配置
在頁面中添加:
1
<script type='text/javascript' src='dwr/interface/Folder.js'>
2
</script>
3
<script type='text/javascript' src='dwr/engine.js'>
4
</script>
5
<script type='text/javascript' src='dwr/util.js'>
6
</script>
需要注意的是路徑,而不是官方的:
1
<script type='text/javascript' src='../interface/Folder.js'></script>
2
<script type='text/javascript' src='../engine.js'></script>
3
<script type='text/javascript' src='../util.js'></script>
二、返回的json串需要進行處理,才可以在前臺javascript正確處理。
使用json-lib的JSONArray對List類型數據進行處理:
1
JSONArray.fromObject(folders).toString();
返回List型的json數據為:
1
[
{"folderId":1,"folderName":"收信箱"},
{"folderId":2,"folderName":"發信箱"},
{"folderId":3,"folderName":"草稿箱"},
{"folderId":4,"folderName":"回收站"},
{"folderId":5,"folderName":"垃圾箱"}]
這個數據返回到前臺一定要用Ext.util.JSON.decode(data)進行編碼,否則javascript不能正常處理。
1
//刷新文件夾列表,DWR獲取數據。
2
function initFolders()
{
3
Folder.getFolderList(refrashFolders);}
4
5
function refrashFolders(data)
{
6
folders = Ext.util.JSON.decode(data);//一定要用這個進行解碼
7
initFolderTreeNode();}
--------------------
WE準高手
posted @
2008-03-14 10:21 大衛 閱讀(2423) |
評論 (1) |
編輯 收藏
摘要: 頁面代碼:
1<html>
2 <head>
3 <meta http-equiv="Content-Type" content="text/html; ch...
閱讀全文
posted @
2008-03-07 16:11 大衛 閱讀(5096) |
評論 (1) |
編輯 收藏
1
package test;
2
3
import java.lang.reflect.Method;
4
import java.lang.reflect.ParameterizedType;
5
import java.lang.reflect.Type;
6
import java.util.List;
7
import java.util.Map;
8
9
public class TempTest
{
10
11
public static void main(String[] args) throws Exception
{
12
Method[] methods = TempTest.class.getDeclaredMethods();
13
for (Method method : methods)
{
14
System.out.println("method:" + method.getName());// 方法名
15
16
// //////////////方法的參數
17
System.out.println(" paramTypeType: ");
18
Type[] paramTypeList = method.getGenericParameterTypes();// 方法的參數列表
19
for (Type paramType : paramTypeList)
{
20
System.out.println(" " + paramType);// 參數類型
21
if (paramType instanceof ParameterizedType)/**//* 如果是泛型類型 */
{
22
Type[] types = ((ParameterizedType) paramType)
23
.getActualTypeArguments();// 泛型類型列表
24
System.out.println(" TypeArgument: ");
25
for (Type type : types)
{
26
System.out.println(" " + type);
27
}
28
}
29
}
30
31
// //////////////方法的返回值
32
System.out.println(" returnType: ");
33
Type returnType = method.getGenericReturnType();// 返回類型
34
System.out.println(" " + returnType);
35
if (returnType instanceof ParameterizedType)/**//* 如果是泛型類型 */
{
36
Type[] types = ((ParameterizedType) returnType)
37
.getActualTypeArguments();// 泛型類型列表
38
System.out.println(" TypeArgument: ");
39
for (Type type : types)
{
40
System.out.println(" " + type);
41
}
42
}
43
44
}
45
46
}
47
48
public static String method1(List list)
{
49
return null;
50
}
51
52
private static Map<String, Double> method2(Map<String, Object> map)
{
53
return null;
54
}
55
56
}
posted @
2008-02-28 10:29 大衛 閱讀(5814) |
評論 (3) |
編輯 收藏