日期:2011-03-22 16:16:00 来源:本站整理
<b>按照name调用getName办法</b>[Java编程]
本文“<b>按照name调用getName办法</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
问题是这样的,我看到本来有一个办法是按照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; }
以上是“<b>按照name调用getName办法</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论