根据name调用getName方法 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-25
根据name调用getName方法时间:2007-05-30问题是这样的,我看到原来有一个方法是根据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; } |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于根据name调用getName方法 - 编程入门网的所有评论