|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net网页编程并驾齐驱的
在struts的理论过程当中,常常两个javabean互换数据的情形,如ActionForm与数据库中的表相干的bean互换数据。一般情形下要写良多get和set语句,一个个属性顺次拷贝。如许的话,云云反复沉重的事情让程序员感到不到编程的康乐。因而在网上查相干材料知,在apache.org有一个project:common-beanutil,供应的一个BeanUtil类,这个类有一个静态办法BeanUtil.copyProperties()完成了该功效。厥后我在与java相干的书上晓得的java的反射机制(reflect),偿试着并完成了两个javabean的属性拷贝功效。
importjava.lang.reflect.*;
/**
@authorXiaoboZheng
@date2005-12-28
*/
publicclassBeanUtil2{
/**
@parameterObjectobj1,Objectobj2
@returnObject
用到反射机制
此办法将挪用obj1的getter办法,将失掉的值作为响应的参数传给obj2的setter办法
注重,obj1的getter办法和obj2办法必需是public范例
*/
publicstaticObjectCopyBeanToBean(Objectobj1,Objectobj2)throwsException{
Method[]method1=obj1.getClass().getMethods();
Method[]method2=obj2.getClass().getMethods();
StringmethodName1;
StringmethodFix1;
StringmethodName2;
StringmethodFix2;
for(inti=0;i<method1.length;i++){
methodName1=method1[i].getName();
methodFix1=methodName1.substring(3,methodName1.length());
if(methodName1.startsWith("get")){
for(intj=0;j<method2.length;j++){
methodName2=method2[j].getName();
methodFix2=methodName2.substring(3,methodName2.length());
if(methodName2.startsWith("set")){
if(methodFix2.equals(methodFix1)){
Object[]objs1=newObject[0];
Object[]objs2=newObject[1];
objs2[0]=method1[i].invoke(obj1,objs1);//激活obj1的响应的get的办法,objs1数组寄存挪用该办法的参数,此例中没有参数,该数组的长度为0
method2[j].invoke(obj2,objs2);//激活obj2的响应的set的办法,objs2数组寄存挪用该办法的参数
continue;
}
}
}
}
}
returnobj2;
}
}
<p>
他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 |
|