Java实现不同的类的属性之间相互赋值

  

在开发的时候可能会出现将一个类的属性值,复制给另外一个类的属性值,这在读写数据库的时候,可能会经常的遇到,特别是对于一个有继承关系的类的时候,我们需要重写很多多余的代码,下面有一种简单的方法实现该功能

  

<强> 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,测试结果如下:

  

癑ava实现不同的类的属性之间相互赋值"

  

可知具有相同属性名和类型的属性被赋值,剩下的没有被匹配到的结果则为零;

  

<强>总结

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

Java实现不同的类的属性之间相互赋值