java来合并两个对象

来源:互联网 发布:spark 运行java jar包 编辑:程序博客网 时间:2024/06/05 22:27

merge两个对象,互补null,以新对象为主,代码如下


public static Object merge(Objectmaster, Objectfollow){

if(master ==null &&follow ==null)

returnnull;

else if(master == null && null != follow)

returnfollow;

else if(null != master && null == follow)

returnmaster;

else{

Object[] objectNone =new Object[]{};

Class<?> c1 =master.getClass();

Field[] fields =c1.getDeclaredFields();

Method[] methods =c1.getDeclaredMethods();

for(Fieldf :fields){

String fName =f.getName();

Object o1 =null;

Object o2 =null;

for(Methodm :methods){

String mName =m.getName();

if(mName.contains("get") &&mName.equalsIgnoreCase("get"+fName)){

try {

o1 = m.invoke(master, objectNone);

o2 = m.invoke(follow, objectNone);

} catch (Exceptione) {

e.printStackTrace();

}

break;

}

}

o1 = getFitObject(o1,o2);

for (Methodm :methods) {

String mName =m.getName();

if (mName.contains("set") &&mName.equalsIgnoreCase("set" +fName)) {

try {

m.invoke(master,new Object[] {o1 });

} catch (Exceptione) {

e.printStackTrace();

}

break;

}

}

}

}

returnmaster;

}



private static Object getFitObject(Objecto1, Object o2){

if(null ==o1 && null ==o2){

returno1;

}else if(null != o1 && null == o2){

returno1;

}else if(null == o1 && null != o2){

returno2;

}else{

String s1 =o1.toString();

String s2 =o2.toString();

if(s1.equals("0"))//过滤那些int long 

s1 = "";

if(StringUtils.isBlank(s1) && StringUtils.isBlank(s2)){

return o1;

}else if(StringUtils.isNotBlank(s1) && StringUtils.isBlank(s2)){

return o1;

}else if(StringUtils.isBlank(s1) && StringUtils.isNotBlank(s2)){

return o2;

}else{

return o1;

}

}

}


1 0
原创粉丝点击