Java民工的鐵皮房
Consciousness Of Programming - wjywilliam 想飛,總是會飛的......
posts - 8, comments - 14, trackbacks - 0, articles - 9
BlogJava
::
首頁
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
Reflct反射機制一些基本用法
Posted on 2009-02-10 14:40
wjywilliam
閱讀(2124)
評論(5)
編輯
收藏
所屬分類:
Java
PS:若轉(zhuǎn)載發(fā)布此文章或相關(guān)代碼,請注明出處,謝。
最近用到了reflct機制,此前并不熟悉,趁此機會留個底,怕忘記了,只是些小應(yīng)用而已。
1. 動態(tài)匹配方法名字賦值
需求:
一個tempLoan bean里面有幾個屬性 setPsAddr11,setPsAddr12,setPsAddr13,但是從DB里面取出來的只有一個psAddr1 field值,值是
“A~B~C”的結(jié)構(gòu)。需要分別把值A(chǔ)賦到psAddr11,B賦到psAddr12,C賦到psAddr13。
為了以免后面再增加屬性例如4,5,6之類的,不采取手工硬塞動作,故此采取反射,統(tǒng)一邏輯處理。
如下代碼:
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的方法,由對應(yīng)的get方法取出來list的元素的值,按照順序動態(tài)賦給tempLoan 的set方法。
2. 根據(jù)參數(shù)對應(yīng)Bean里面的變量名,把Bean內(nèi)所對應(yīng)的變量的值賦給另一個變量
需求:
根據(jù)傳入?yún)?shù)一個變量名和一個BO,匹配BO里面的屬性,若與傳入變量名的值相同,則取BO對應(yīng)屬性的值賦于另一變量
?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反射機制用法的一些應(yīng)用
回復(fù)
更多評論
2009-02-10 15:23 by
ci
good....
#
re: Reflct反射機制用法的一些應(yīng)用
回復(fù)
更多評論
2009-02-10 23:38 by
與你同飛
java的基本功
#
re: Reflct反射機制一些基本用法
回復(fù)
更多評論
2009-03-01 20:25 by
baby
Excellent~ support you, wjywilliam
#
re: Reflct反射機制一些基本用法
回復(fù)
更多評論
2009-05-23 08:00 by
xk
非常不錯,有需求有解決辦法,我一下就看懂反射了,謝謝!~~~
#
re: Reflct反射機制一些基本用法
回復(fù)
更多評論
2009-10-14 17:30 by
gggggggg
<script>alert('AA')</script>
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
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
搜索
積分與排名
積分 - 22005
排名 - 1642
最新評論
1.?re: EMS SQL Manager 2007 Professional for Oracle 更新數(shù)據(jù)的問題(字符集的問題)!
居然這么久了還有人回我這篇東西,哈哈,謝謝了。想不到 xu 閣下和我經(jīng)歷一樣啊,都是覺得EMS系列的工具比較易用方便啊。
--wjywilliam
2.?re: EMS SQL Manager 2007 Professional for Oracle 更新數(shù)據(jù)的問題(字符集的問題)!
評論內(nèi)容較長,點擊標(biāo)題查看
--xu
3.?re: Reflct反射機制一些基本用法
<script>alert('AA')</script>
--gggggggg
4.?re: Reflct反射機制一些基本用法
非常不錯,有需求有解決辦法,我一下就看懂反射了,謝謝!~~~
--xk
5.?re: Reflct反射機制一些基本用法
Excellent~ support you, wjywilliam
--baby
閱讀排行榜
1.?一個體現(xiàn)Java接口及工廠模式優(yōu)點的例子 & 設(shè)計模式之Factory(6668)
2.?Reflct反射機制一些基本用法(2124)
3.?Struts2: Jdk1.5 + Tomcat 5.0.28環(huán)境下運行Struts2的項目報錯及解決方法(2099)
4.?EMS SQL Manager 2007 Professional for Oracle 更新數(shù)據(jù)的問題(字符集的問題)!(1849)
5.?網(wǎng)頁表單相關(guān)特效整理(693)
評論排行榜
1.?EMS SQL Manager 2007 Professional for Oracle 更新數(shù)據(jù)的問題(字符集的問題)!(8)
2.?Reflct反射機制一些基本用法(5)
3.?網(wǎng)頁表單相關(guān)特效整理(1)
4.?軟件測試遇到的情況(0)
5.?程序員眼中的《盜夢空間》 - 轉(zhuǎn)載(0)
主站蜘蛛池模板:
日韩精品无码免费视频
|
久久久久成人片免费观看蜜芽
|
亚洲情侣偷拍精品
|
伊人久久免费视频
|
亚洲日韩精品无码专区加勒比☆
|
在线看免费观看AV深夜影院
|
亚洲AV无码一区二区三区性色
|
国产黄色一级毛片亚洲黄片大全
|
亚欧免费无码aⅴ在线观看
|
自拍偷区亚洲国内自拍
|
亚洲综合国产一区二区三区
|
一级女人18毛片免费
|
一级毛片免费不卡
|
久久精品亚洲AV久久久无码
|
亚洲啪啪AV无码片
|
在线观看免费毛片
|
日韩内射激情视频在线播放免费
|
亚洲欧好州第一的日产suv
|
亚洲va无码手机在线电影
|
小小影视日本动漫观看免费
|
亚洲a一级免费视频
|
日本在线观看免费高清
|
亚洲一区二区三区免费在线观看
|
亚洲区不卡顿区在线观看
|
特级做A爰片毛片免费69
|
国产成人无码区免费内射一片色欲
|
亚洲av日韩av永久无码电影
|
久久亚洲日韩看片无码
|
国产亚洲精aa成人网站
|
永久免费视频v片www
|
中文字幕av无码无卡免费
|
成年人性生活免费视频
|
午夜免费啪视频在线观看
|
大学生高清一级毛片免费
|
午夜免费福利小电影
|
yy一级毛片免费视频
|
亚洲av成本人无码网站
|
亚洲国产综合精品中文第一
|
亚洲黄网在线观看
|
亚洲AV无码专区国产乱码4SE
|
国产精品亚洲不卡一区二区三区
|