zoukankan      html  css  js  c++  java
  • 工具类

    将一个对象的成员变量值赋值给另一个对象的相同成员变量
     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     }
  • 相关阅读:
    unity HideInInspector与SerializeField
    Unity3D之游戏架构脚本该如何来写(转)
    写在创业公司工作后
    工作选择
    指针引用
    sqrt函数实现
    超平面
    【读书笔记】读《程序员面试宝典》
    【小白学游戏常用算法】一、随机迷宫算法
    【Cocos2d-x游戏开发】浅谈游戏中的坐标系
  • 原文地址:https://www.cnblogs.com/javahuang/p/2948237.html
Copyright © 2011-2022 走看看