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);
}
}