rocket
走在agile的小路上
BlogJava
首页
新随笔
联系
聚合
管理
随笔-54 评论-187 文章-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
阅读(1013)
评论(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 不同实现 +反射都好用的多
回复
更多评论
新闻频道
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
Dict.CN 在线词典, 英语学习, 在线翻译
QQ:19794405
agile分享群:59765983
敏捷项目实践经验分享
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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(3)
给我留言
查看公开留言
查看私人留言
我参与的团队
深圳Java开发者之家(0/0)
随笔分类
(14)
UI相关
好文翻译(1)
常用框架(1)
敏捷方法(4)
数据库相关
构架设计(2)
经验积累(3)
项目管理(3)
随笔档案
(54)
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
搜索
积分与排名
积分 - 62456
排名 - 119
最新评论
1. re: roller扩展开发经验小结之xmlrpc
评论内容较长,点击标题查看
--rocket
2. re: roller扩展开发经验小结之xmlrpc
写了半天怎么不见服务器端代码
--xml-rpc
3. re: roller扩展开发经验小结之xmlrpc
评论内容较长,点击标题查看
--Jack.Wang
4. re: roller扩展开发经验小结之xmlrpc[未登录]
来的很及时啊。我正想做一个blog,但看看open-open上没有合适的,可以去看看这个啦
--paul
5. re: roller扩展开发经验小结之xmlrpc
@andy 林
sorry,你看得比较仔细,这里是我当时copy的两段不同的代码,所以出问题了,呵呵,马上改
--rocket
阅读排行榜
1. 一个新java web项目入手过程总结(4619)
2. Spring+hibernate 单元测试框架总结(2875)
3. 招聘java程序员,系统架构师(2192)
4. 感慨于我们的技术土壤(1964)
5. DAO层单元测试(1950)
评论排行榜
1. 不仁义,不仗义(24)
2. 招聘java程序员,系统架构师(18)
3. 单元测试究竟是测试什么?(9)
4. mingle使用小记--agile项目管理工具(8)
5. 关于workshop(原nitrox m7)的utf-8中文乱码问题解决(8)