实体Person:
package inet.com.cn;
import java.math.BigDecimal;
public class Person {
public int id;
public String name;
public Integer age;
public Boolean flag;
public Integer score;
public Double amount;
public Byte bt;
public Float ft;
public BigDecimal bd;
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age
+ ", flag=" + flag + ", score=" + score + ", amount=" + amount
+ ", bt=" + bt + ", ft=" + ft + ", bd=" + bd + "]";
}
}
合并测试:
package inet.com.cn;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.xml.sax.HandlerBase;
public class MergeTest {
public static void main(String[] args) {
Person p1 = new Person();
p1.id = 1;
p1.age = 2;
p1.name = "lisi";
p1.flag = true;
p1.bd = new BigDecimal("10");
p1.ft = 10f;
p1.score = 100;
p1.amount = 50000.0;
p1.bt = 10;
Person p2 = new Person();
p2.id = 2;
p2.name = "zhangsan";
//p2.setFlag(false);
try {
copy(p1,p2);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(p1);
System.out.println(p2);
//testType();
}
public static void copy(Object o1, Object o2) throws Exception {
Field[] field = o1.getClass().getDeclaredFields();
for(int j=0 ; j
String name = field[j].getName();
String type = field[j].getGenericType().toString();
if(type.equals("class java.lang.String")){
String value1 = (String)field[j].get(o1);
String value2 = (String)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
} else if(type.equals("class java.lang.Integer")) {
Integer value1 = (Integer)field[j].get(o1);
Integer value2 = (Integer)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}else if(type.equals("class java.lang.Double")){
Double value1 = (Double)field[j].get(o1);
Double value2 = (Double)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}else if(type.equals("class java.lang.Boolean")){
Boolean value1 = (Boolean)field[j].get(o1);
Boolean value2 = (Boolean)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}else if(type.equals("class java.math.BigDecimal")){
BigDecimal value1 = (BigDecimal)field[j].get(o1);
BigDecimal value2 = (BigDecimal)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}else if(type.equals("class java.lang.Byte")){
Byte value1 = (Byte)field[j].get(o1);
Byte value2 = (Byte)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}else if(type.equals("class java.lang.Float")){
Float value1 = (Float)field[j].get(o1);
Float value2 = (Float)field[j].get(o2);
if(value1 == null && value2!=null){
field[j].set(o1, value2);
}else if(value1 != null && value2==null){
field[j].set(o2, value1);
}
}
}
}
/**
* 把第一个字符大写化
* @param name
* @return
*/
private static String toUpperCaseFirstOne(String name) {
if(name != null && !"".equals(name)){
if(name.length() == 1){
name = name.toUpperCase();
}else{
name = name.substring(0,1).toUpperCase()+name.substring(1);
}
}
return name;
}
private static void testType() {
Integer i = 10;
System.out.println( i.getClass());
Double d = 10.0;
System.out.println( d.getClass());
Boolean b = true;
System.out.println( b.getClass());
Date date = new Date();
System.out.println( date.getClass());
String s = "";
System.out.println(s.getClass());
BigDecimal bd = new BigDecimal("0");
System.out.println(bd.getClass());
Float f = 10F;
System.out.println(f.getClass());
Byte bt = 10;
System.out.println(bt.getClass());
}
}