Java民工的鐵皮房
Consciousness Of Programming - wjywilliam 想飛,總是會飛的......
posts - 8, comments - 14, trackbacks - 0, articles - 9
BlogJava
::
首頁
::
新隨筆
::
聯系
::
聚合
::
管理
Reflct反射機制一些基本用法
Posted on 2009-02-10 14:40
wjywilliam
閱讀(2124)
評論(5)
編輯
收藏
所屬分類:
Java
PS:若轉載發布此文章或相關代碼,請注明出處,謝。
最近用到了reflct機制,此前并不熟悉,趁此機會留個底,怕忘記了,只是些小應用而已。
1. 動態匹配方法名字賦值
需求:
一個tempLoan bean里面有幾個屬性 setPsAddr11,setPsAddr12,setPsAddr13,但是從DB里面取出來的只有一個psAddr1 field值,值是
“A~B~C”的結構。需要分別把值A賦到psAddr11,B賦到psAddr12,C賦到psAddr13。
為了以免后面再增加屬性例如4,5,6之類的,不采取手工硬塞動作,故此采取反射,統一邏輯處理。
如下代碼:
1
Class?tempLoanClass?
=
?tempLoan.getClass();
2
????????????????
if
(tempLoan.getPsAddr1()
!=
null
)
{
3
????????????????????List
<
String
>
?psAddress1List?
=
?Arrays.asList(tempLoan.getPsAddr1().split(
"
~
"
));
4
????????????????????
for
?(
int
?x?
=
?
0
;?x?
<
?psAddress1List.size();?x
++
)?
{
5
????????????????????????Method?method?
=
?tempLoanClass.getDeclaredMethod(
"
setPsAddr1
"
?
+
?(x?
+
?
1
),?
new
?Class[]?
{?String.
class
?}
);
6
????????????????????????method.invoke(tempLoan,?
new
?Object[]?
{?psAddress1List.get(x)?}
);
7
????????????????????}
????
8
????????????????}
如上用loop來映射set的方法,由對應的get方法取出來list的元素的值,按照順序動態賦給tempLoan 的set方法。
2. 根據參數對應Bean里面的變量名,把Bean內所對應的變量的值賦給另一個變量
需求:
根據傳入參數一個變量名和一個BO,匹配BO里面的屬性,若與傳入變量名的值相同,則取BO對應屬性的值賦于另一變量
?1
public
?
void
?setValueInField(Loan?loan,?String?fieldName,?String?fieldValue)?
throws
?Exception
{
?2
????????
try
{
?3
????????????Class?tempLoanClass?
=
?loan.getClass();
?4
????????????Method[]?methods?
=
?tempLoanClass.getMethods();
?5
????????????
for
(
int
?x
=
0
;?x
<
methods.length;?x
++
)
{
?6
????????????????String?methodName?
=
?methods[x].getName();
?7
????????????????
if
(methodName.indexOf(
"
get
"
)
>-
1
)
{
?8
????????????????????
if
(methodName.substring(
3
,?methodName.length()).equalsIgnoreCase(fieldName))
{
?9
????????????????????????Object?value?
=
?methods[x].invoke(loan,?
new
?Object[]?
{}
);
10
????????????????????????
if
(value?
!=
?
null
)
{
11
????????????????????????????fieldValue?
=
?value.toString();
12
????????????????????????}
13
????????????????????}
14
????????????????}
15
????????????}
16
????????}
catch
(Exception?e)
{
17
????????????e.printStackTrace();
18
????????}
19
????}
3. 這個比較尋常了,就是列出一個Class所有的全局變量名
//
?Retrieve?global?variable?object?in?class
???Object?obj?
=
?
new
?Mytest();
????????Field[]?fields?
=
?obj.getClass().getDeclaredFields();
????????
for
?(
int
?i?
=
?
0
,?len?
=
?fields.length;?i?
<
?len;?i
++
)?
{
????????????String?varName?
=
?fields[i].getName();
????????????
try
?
{
????????????????
boolean
?accessFlag?
=
?fields[i].isAccessible();
????????????????fields[i].setAccessible(
true
);
????????????????Object?o?
=
?fields[i].get(obj);
????????????????System.out.println(
"
Include?variable:
"
?
+
?varName?
+
?
"
?=?
"
?
+
?o);
????????????????fields[i].setAccessible(accessFlag);
????????????}
?
catch
?(IllegalArgumentException?ex)?
{
????????????????ex.printStackTrace();
????????????}
?
catch
?(IllegalAccessException?ex)?
{
????????????????ex.printStackTrace();
????????????}
????????}
?
評論
#
re: Reflct反射機制用法的一些應用
回復
更多評論
2009-02-10 15:23 by
ci
good....
#
re: Reflct反射機制用法的一些應用
回復
更多評論
2009-02-10 23:38 by
與你同飛
java的基本功
#
re: Reflct反射機制一些基本用法
回復
更多評論
2009-03-01 20:25 by
baby
Excellent~ support you, wjywilliam
#
re: Reflct反射機制一些基本用法
回復
更多評論
2009-05-23 08:00 by
xk
非常不錯,有需求有解決辦法,我一下就看懂反射了,謝謝!~~~
#
re: Reflct反射機制一些基本用法
回復
更多評論
2009-10-14 17:30 by
gggggggg
<script>alert('AA')</script>
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © wjywilliam
日歷
<
2009年10月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的文章
我的評論
我的參與
最新評論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
Hibernate
Html/Javascript(1)
IDE
Java(1)
JSP(1)
Other(1)
Spring
SQL(1)
Struts
Struts2(1)
項目管理(1)
隨筆檔案
2014年11月 (1)
2010年10月 (1)
2009年2月 (1)
2008年4月 (1)
2008年3月 (1)
2007年4月 (2)
2006年11月 (1)
文章分類
Hibernate
Html/Javascript (1)
IDE
Java(3)
JSP
Log4j(1)
Other
SQL
String
Struts
Struts2(3)
文章檔案
2011年6月 (1)
2011年4月 (1)
2008年10月 (1)
2008年4月 (1)
2007年6月 (1)
2007年4月 (3)
相冊
Java Article Relate
搜索
積分與排名
積分 - 22026
排名 - 1642
最新評論
1.?re: EMS SQL Manager 2007 Professional for Oracle 更新數據的問題(字符集的問題)!
居然這么久了還有人回我這篇東西,哈哈,謝謝了。想不到 xu 閣下和我經歷一樣啊,都是覺得EMS系列的工具比較易用方便啊。
--wjywilliam
2.?re: EMS SQL Manager 2007 Professional for Oracle 更新數據的問題(字符集的問題)!
評論內容較長,點擊標題查看
--xu
3.?re: Reflct反射機制一些基本用法
<script>alert('AA')</script>
--gggggggg
4.?re: Reflct反射機制一些基本用法
非常不錯,有需求有解決辦法,我一下就看懂反射了,謝謝!~~~
--xk
5.?re: Reflct反射機制一些基本用法
Excellent~ support you, wjywilliam
--baby
閱讀排行榜
1.?一個體現Java接口及工廠模式優點的例子 & 設計模式之Factory(6670)
2.?Reflct反射機制一些基本用法(2124)
3.?Struts2: Jdk1.5 + Tomcat 5.0.28環境下運行Struts2的項目報錯及解決方法(2102)
4.?EMS SQL Manager 2007 Professional for Oracle 更新數據的問題(字符集的問題)!(1850)
5.?網頁表單相關特效整理(696)
評論排行榜
1.?EMS SQL Manager 2007 Professional for Oracle 更新數據的問題(字符集的問題)!(8)
2.?Reflct反射機制一些基本用法(5)
3.?網頁表單相關特效整理(1)
4.?軟件測試遇到的情況(0)
5.?程序員眼中的《盜夢空間》 - 轉載(0)
主站蜘蛛池模板:
美女被羞羞网站免费下载
|
美女羞羞喷液视频免费
|
99久久这里只精品国产免费
|
四虎亚洲精品高清在线观看
|
国产成人免费A在线视频
|
你是我的城池营垒免费观看完整版
|
亚洲福利一区二区精品秒拍
|
好爽…又高潮了免费毛片
|
91在线免费观看
|
亚洲大码熟女在线观看
|
亚洲短视频男人的影院
|
免费欧洲毛片A级视频无风险
|
鲁大师在线影院免费观看
|
国产成人va亚洲电影
|
精品无码一区二区三区亚洲桃色
|
亚洲国产成人在线视频
|
亚洲不卡AV影片在线播放
|
18级成人毛片免费观看
|
一个人看的免费视频www在线高清动漫
|
亚洲第一香蕉视频
|
久久亚洲国产成人影院网站
|
成年女人免费视频播放77777
|
99久在线国内在线播放免费观看
|
亚洲人成无码网站在线观看
|
亚洲国产成人久久精品动漫
|
亚洲国产亚洲综合在线尤物
|
国产精品亚洲精品日韩已方
|
国产成人精品日本亚洲网址
|
亚洲人成网站在线观看播放
|
国产精品四虎在线观看免费
|
99无码人妻一区二区三区免费
|
精品免费久久久久国产一区
|
亚洲av日韩av永久无码电影
|
亚洲精品综合久久中文字幕
|
亚洲欧洲美洲无码精品VA
|
免费播放特黄特色毛片
|
天天天欲色欲色WWW免费
|
成年人免费的视频
|
91热成人精品国产免费
|
成全动漫视频在线观看免费高清版下载
|
亚洲欧洲精品视频在线观看
|