在开发的时候可能会出现将一个类的属性值,复制给另外一个类的属性值,这在读写数据库的时候,可能会经常的遇到,特别是对于一个有继承关系的类的时候,我们需要重写很多多余的代码,下面有一种简单的方法实现该功能
<强> 1,首先有两个类,两个类之间有相同的属性名和类型的,也有不同的属性名很类型:强>
公开课ClassTestCopy2 { 私人int id; 私人字符串名称; 私人密码字符串; 私人字符串性; 私人字符串年龄;//获取和设置方法 }
公开课ClassTestCopy1 { 私人int id; 私人字符串名称; 私人密码字符串;//获取和设置方法 }
<强> 2,下边的就是实现该功能的方法体:强>
公共静态空副本(源对象,对象dest){抛出异常//获取属性 BeanInfo sourceBean=Introspector.getBeanInfo (source.getClass (), java.lang.Object.class); PropertyDescriptor [] sourceProperty=sourceBean.getPropertyDescriptors (); BeanInfo destBean=Introspector.getBeanInfo (dest.getClass (), java.lang.Object.class); PropertyDescriptor [] destProperty=destBean.getPropertyDescriptors (); 尝试{ for (int i=0;我& lt;sourceProperty.length;我+ +){ for (int j=0;j & lt;destProperty.length;j + +) { 如果(sourceProperty[我]. getname () .equals (destProperty [j] . getname ())) {//调用源的getter方法和桌子的setter方法 destProperty [j] .getWriteMethod ()。调用(桌子,sourceProperty[我].getReadMethod () .invoke(源)); 打破; } } } }捕捉(异常e) { 抛出新的异常(“属性复制失败:“+ e.getMessage ()); } }
<强> 3,下边进行测试:强>
公共静态void main (String [] args) { ClassTestCopy1 c1=new ClassTestCopy1(1205030213,“名字:xuliugen”,密码:123456); ClassTestCopy2 c2=new ClassTestCopy2 (); 尝试{ CopyBeanParamsTest。复制(c1, c2); System.out.println(“- - - - - - - - - - - -往上平移- - - - - - - - - - - - - - - - -”); System.out.println (c2.getId ()); System.out.println (c2.getName ()); System.out.println (c2.getPassword ()); System.out.println (c2.getSex ()); System.out.println (c2.getAge ()); }捕捉(异常e) { e.printStackTrace (); } }
<强> 4,测试结果如下:强>
可知具有相同属性名和类型的属性被赋值,剩下的没有被匹配到的结果则为零;
<强>总结强>
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接