对象数据转移到另一个对象数据

package com.testtt.main.model;
import java.util.Date;
public class User {
    private String name;
    private String sex;
    private String address;
    private Integer age;
    private Integer userId;
    private String uuid;
    private Date date;

    public User() {
    }
    public User(String name, String sex, String address, Integer age,
            Integer userId) {
        this.name = name;
        this.sex = sex;
        this.address = address;
        this.age = age;
        this.userId = userId;
    }

    //get与set

    @Override
    public String toString() {
        return "User [name=" + name + ", sex=" + sex + ", address=" + address
                + ", age=" + age + ", userId=" + userId + ",uuid" + uuid + "]";
    }

}


package com.testtt.main.model;
import java.util.Date;
public class User2 {
    private String name;
    private String sex;
    private String address;
    private String vivi;
    private Integer age;
    private Integer userId;
    private Long oopp;
    private Date date;
    public User2() {
    }
    public User2(String name, String sex, String address, int age, int userId) {
        this.name = name;
        this.sex = sex;
        this.address = address;
        this.age = age;
        this.userId = userId;
    }
    //get与set

    @Override
    public String toString() {
        return "User [name=" + name + ", sex=" + sex + ", address=" + address
                + ", age=" + age + ", userId=" + userId + ",vivi=" + vivi
                + ",oopp=" + oopp + ",date=" + date + "]";
    }
}

----------------------------------------------------------------------------------------------------------------------------


package com.testtt.main.javautil;


import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.Date;


import com.testtt.main.model.User;
import com.testtt.main.model.User2;


/**
 * 一个对象数据转换另一个新数据
 * 
 * @author wuJh
 *
 */
public class ObjectDataToNewObject {


    /**
     * 一个对象数据转换另一个新数据,并还回新对象
     * 
     * @param oldClazz
     *            旧数据
     * @param newClazz
     *            新数据
     * @return
     */
    public static Object getNewObject(Object oldObj, Object newObj) {
        Object obj = null;
        try {
            /*
             * 得到类中的所有属性集合
             */
            Field[] oldFields = oldObj.getClass().getDeclaredFields();
            Field[] newFields = newObj.getClass().getDeclaredFields();


            if (null == oldFields || oldFields.length == 0 || null == newFields
                    || newFields.length == 0) {
                return obj;
            }


            for (int i = 0; i < oldFields.length; i++) {
                Field oldField = oldFields[i];
                oldField.setAccessible(true); // 设置些属性是可以访问的
                String oldName = oldField.getName();
                Object oldValue = oldField.get(oldObj);// 得到此属性的值
                String type = oldField.getGenericType().toString();
                System.out.println("---" + oldName + "," + oldValue);


                for (int k = 0; k < newFields.length; k++) {
                    Field newField = newFields[k];
                    newField.setAccessible(true); // 设置些属性是可以访问的
                    String newName = newField.getName();
                    String type = newField.getGenericType().toString();
                    if (oldName.equals(newName)) {
                        // 如果type是类类型,则前面包含"class ",后面跟类名
                        if (type.equals("class java.lang.String")) {
                            Method m = newObj.getClass().getMethod(
                                    "set" + upperInitialName(newName),
                                    String.class);
                            m.invoke(newObj,
                                    oldValue == null ? null : oldValue + "");
                        }
                        if (type.equals("class java.lang.Integer")) {
                            Method m = newObj.getClass().getMethod(
                                    "set" + upperInitialName(newName),
                                    Integer.class);
                            m.invoke(newObj, oldValue == null ? null
                                    : Integer.parseInt(oldValue + ""));
                        }
                        if (type.equals("class java.lang.Long")) {
                            Method m = newObj.getClass().getMethod(
                                    "set" + upperInitialName(newName),
                                    Long.class);
                            m.invoke(newObj,
                                    oldValue == null ? null : (Long) oldValue);
                        }
                        if (type.equals("class java.lang.Boolean")) {
                            Method m = newObj.getClass().getMethod(
                                    "set" + upperInitialName(newName),
                                    Boolean.class);
                            m.invoke(newObj, oldValue == null ? null
                                    : Boolean.valueOf(oldValue + ""));
                        }
                        if (type.equals("class java.util.Date")) {
                            Method m = newObj.getClass().getMethod(
                                    "set" + upperInitialName(newName),
                                    Date.class);
                            m.invoke(newObj,
                                    oldValue == null ? null : (Date) oldValue);
                        }
                    }
                }
            }
            obj = newObj;
            System.out.println(obj);


        } catch (Exception e) {
            e.printStackTrace();
        }


        return obj;
    }


    /**
     * 将属性的首字符大写,方便构造get,set方法
     * 
     * @param name
     *            名称
     * @return
     */
    private static String upperInitialName(String name) {
        // System.out.println("name:" + name);
        // 将属性的首字符大写,方便构造get,set方法
        String upperName = name.substring(0, 1).toUpperCase()
                + name.substring(1);
        // System.out.println("upperName:" + upperName);
        return upperName;
    }


    public static void main(String[] args) throws Exception {
        User user = new User();
        user.setUuid("uuid");
        user.setUserId(8899);
        user.setSex("woman");
        user.setName("xiao");
        user.setAge(90);
        user.setAddress("江南烟雨");
        user.setDate(new Date());
        User2 user2 = new User2();
        System.out.println(
                "------------------------------------------------------");
        user2 = (User2) getNewObject(user, user2);
        String ss = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")
                .format(user2.getDate());
        System.out.println("ss:" + ss);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值