工具类

将一个对象的成员变量值赋值给另一个对象的相同成员变量
 1 /**
 2      * 将源表的属性赋值到目标表中,目标表中的字段必须在源表中存在
 3      * 
 4      * @param des
 5      *            目标表
 6      * @param src
 7      *            源表
 8      */
 9     public static void copyPropertys(Object des, Object src) {
10         Class<?> srcClass = src.getClass();//返回实体类
11         Field[] desFields = des.getClass().getDeclaredFields();//返回此类的所有字段组成的字段数组
12         Field f;
13         //循环
14         for (Field field : desFields) {
15             if (field.getName().equals("serialVersionUID")) {//序列化id
16                 continue;
17             }
18             try {
19                 //将源对象的超类中的成员变量中的值set进对应的目标对象
20                 try {
21                     f = srcClass.getSuperclass().getDeclaredField(//得到父类的所有字段组成的字段数组
22                             field.getName());
23                     f.setAccessible(true);//取消java语言访问检查(在反射的时候如果类的成员变量为private的时候必须设置)
24                     field.setAccessible(true);
25                     Object obj;
26                     obj = f.get(src);//得到源对象成员变量f的值
27                     if (obj != null) {
28                         field.set(des, obj);//向目标对象des的field字段set值obj
29                     }
30                 } catch (NoSuchFieldException e) {
31                 }
32                 //将源对象中的成员变量值set进目标对象
33                 try {
34                     f = srcClass.getDeclaredField(field.getName());
35                     f.setAccessible(true);
36                     field.setAccessible(true);
37                     Object obj;
38                     obj = f.get(src);
39                     if (obj != null) {
40                         field.set(des, obj);
41                     }
42                 } catch (NoSuchFieldException e) {
43                 }
44             } catch (IllegalArgumentException e) {
45                 e.printStackTrace();
46             } catch (IllegalAccessException e) {
47                 e.printStackTrace();
48             } catch (SecurityException e) {
49                 e.printStackTrace();
50             }
51 
52         }
53     }

 

posted @ 2013-03-07 15:59  javahuang  阅读(126)  评论(0编辑  收藏  举报