rocket
走在agile的小路上
BlogJava
首页
新随笔
联系
聚合
管理
随笔-55 评论-208 文章-0 trackbacks-0
根据name调用getName方法
问题是这样的,我看到原来有一个方法是根据name的名称调用getName()这个方法。
然后方法的实现是使用字符串的判断来实现的
代码如下:
public
Object getOrderby()
{
if
(ORDER_TITLE.equals(
this
.ordered))
{
return
getTitle();
}
else
if
(ORDER_RENDERDATE.equals(
this
.ordered))
{
return
getRenderDate();
}
else
if
(ORDER_CREATEDATE.equals(
this
.ordered))
{
return
getCreateDate();
}
else
if
(ORDER_LASTMODIFIED.equals(
this
.ordered))
{
return
getLastModified();
}
else
{
return
getTitle();
}
}
这样的话如果以后新增get方法就意味着要增加这个getOrderby()方法的判断。
所以我决定用类反射来改造这个方法,首先定义一个doGetMethod的方法
private
Object doGetMethod(String methodName)
throws
Exception
{
Object result
=
null
;
Object[] eo
=
new
Object[]
{}
;
String getMethodName
=
"
get
"
+
methodName.toLowerCase();
Method[] methods
=
getClass().getMethods();
for
(
int
i
=
0
; i
<
methods.length; i
++
)
{
Method method
=
methods[i];
if
(getMethodName.equals(method.getName().toLowerCase()))
{
result
=
method.invoke(
this
, eo);
}
}
return
result;
}
这里根据methodName组合成getMethodName,然后到Method[]中找这个Method,然后用invoke调用这个方法
这里要说明invoke这个方法的参数是第一个参数是指定包含方法的类,第二个参数是指定方法需要的参数。
最后修改原来的getOrderBy
public
Object getOrderby()
{
Object obj
=
getTitle();
try
{
obj
=
doGetMethod(getOrdered());
}
catch
(Exception e)
{
return
obj;
}
return
obj;
}
posted on 2007-04-12 15:36
rocket
阅读(1909)
评论(3)
编辑
收藏
评论:
#
re: 根据name调用getName方法 2007-04-12 17:36 |
G_G
沙发
回复
更多评论
#
re: 根据name调用getName方法 2007-04-12 17:38 |
popoer
good!
回复
更多评论
#
re: 根据name调用getName方法
2007-04-12 19:57 |
刘甘泉
把简单的东西弄复杂了,如果方法固定的话 用 if else 效果更好,如果需要随时更改的话,用interface 不同实现 +反射都好用的多
回复
更多评论
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
Dict.CN 在线词典, 英语学习, 在线翻译
QQ:19794405
agilelife分享群:59765983
QQ上少了,请大家加入msn group:
agilelife@groups.msn.com
敏捷项目实践经验分享
TDD,重构,迭代,结对
<
2007年4月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
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
1
2
3
4
5
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(7)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java俱乐部(0/0)
随笔分类
(15)
UI相关
好文翻译(1)
常用框架(1)
敏捷方法(4)
数据库相关
构架设计(2)
经验积累(3)
项目管理(4)
随笔档案
(55)
2008年12月 (1)
2008年7月 (2)
2008年5月 (8)
2008年3月 (1)
2008年2月 (4)
2007年10月 (1)
2007年9月 (4)
2007年7月 (3)
2007年5月 (2)
2007年4月 (6)
2007年3月 (5)
2007年2月 (2)
2007年1月 (3)
2006年11月 (3)
2006年10月 (1)
2006年8月 (1)
2006年7月 (1)
2006年5月 (2)
2006年4月 (2)
2006年3月 (3)
相册
rocket
搜索
积分与排名
积分 - 132658
排名 - 464
最新评论
1. re: 找了一天的jsp格式化工具,最后还是用回workshop
nb@2
--3
2. re: 一个以前没有注意的问题:java构造函数的执行顺序
不错,很有帮助
--王鹏飞
3. re: 一个新java web项目入手过程总结
标记一下。
--何杨
4. re: 单元测试究竟是测试什么?[未登录]
单元测试是在测逻辑,包括条件判定,循环等。博主的这段代码不包括任何逻辑,当然不需要用单元测试去覆盖。
--王辉
5. re: 找了一天的jsp格式化工具,最后还是用回workshop
傻逼
--2
阅读排行榜
1. 一个新java web项目入手过程总结(8491)
2. 一个以前没有注意的问题:java构造函数的执行顺序(8185)
3. 找了一天的jsp格式化工具,最后还是用回workshop(7367)
4. dwr reverse-ajax 实例解析(6588)
5. Spring+hibernate 单元测试框架总结(6224)
评论排行榜
1. 不仁义,不仗义(24)
2. 招聘java程序员,系统架构师(20)
3. dwr reverse-ajax 实例解析(11)
4. 找了一天的jsp格式化工具,最后还是用回workshop(10)
5. 单元测试究竟是测试什么?(10)