当前页面: 开发资料首页 → JSP 专题 → Java.lang.Reflect反射机制可不可以实现这样的功能?就是动态调用setOption1(optionValue1),setOption2(optionValue2),setOption3(option
Java.lang.Reflect反射机制可不可以实现这样的功能?就是动态调用setOption1(optionValue1),setOption2(optionValue2),setOption3(option
摘要: Java.lang.Reflect反射机制可不可以实现这样的功能?就是动态调用setOption1(optionValue1),setOption2(optionValue2),setOption3(option
因为我在Struts中的一个ActionForm里定义了setOption1(optionValue1),setOption2(optionValue2),setOption3(optionValue3)....一起10个方法,然后我想通过反射机制能不能用一个循环来依次执行方法?
getOptionX()是可以实现,但是setOptionX(String p)不知道该怎么来处理,网上找了半天也没找到。多谢了.
如果你是Struts
// 多个
Map map = new HashMap();
map.put("option1", option1);
map.put("option2", option2);
BeanUtils.populate(yourForm, map);
// 单个
BeanUtils.setProperty(yourForm, "option1", option1);
否则,
Class clazz = yourForm.getClass();
Method method = clazz.getMethod("setOption" + i, new Class[] {String.class});
method.invoke(yourForm, new Object[] {option1});
根据参数的Class Types在Class上找到该方法 -- Method的一个实例.
Call Method.invoke(Object, Object[])
Object是对象实例;
Object[]是实际参数的数列。
shine333(enihs).
哥们,多谢你。
你说的BeanUtils这个工具类是哪个包下的?Apache?
struts的环境里已经有beanutils,从Web Form(HTML)转换成ActionForm(Java)就是用BeanUtils
具体的src请访问http://jakarta.apache.org/commons/beanutils/