Java民工的铁皮房
Consciousness Of Programming - wjywilliam 想飞,总是会飞的......
posts - 8, comments - 14, trackbacks - 0, articles - 9
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
Reflct反射机制一些基本用法
Posted on 2009-02-10 14:40
wjywilliam
阅读(2117)
评论(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年5月
>
日
一
二
三
四
五
六
26
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
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(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
搜索
积分与排名
积分 - 21873
排名 - 1639
最新评论
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(6653)
2. Reflct反射机制一些基本用法(2117)
3. Struts2: Jdk1.5 + Tomcat 5.0.28环境下运行Struts2的项目报错及解决方法(2088)
4. EMS SQL Manager 2007 Professional for Oracle 更新数据的问题(字符集的问题)!(1840)
5. 网页表单相关特效整理(683)
评论排行榜
1. EMS SQL Manager 2007 Professional for Oracle 更新数据的问题(字符集的问题)!(8)
2. Reflct反射机制一些基本用法(5)
3. 网页表单相关特效整理(1)
4. 软件测试遇到的情况(0)
5. 程序员眼中的《盗梦空间》 - 转载(0)