您的位置:首页 > 其它

不同实体类相同属性赋值,复制对象里的值到另一个对象里的工具类

2018-02-24 09:58 2636 查看
方法://不同实体类相同属性赋值,只复制有get,set方法的属性,默认不忽略空字符串,加参数true后忽略
public static void attrCopy(Object objFrom,Object objTo,String key,Boolean... args){
Class clsFrom=null;
Class clsTo=null;
try {
clsFrom = Class.forName(objFrom.getClass().getName());
clsTo = Class.forName(objTo.getClass().getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//获取两个实体类的所有属性
Field[] objFromFields = clsFrom.getDeclaredFields();
Field[] objToFields = clsTo.getDeclaredFields();
boolean ignoreEmpty=false;
//遍历赋值
for (Field formField : objFromFields) {
//如果是属性id不赋值
if(formField.getName().equals(key))
continue;
Object value = invokeGetMethod(objFrom ,formField.getName());
//如果是null不赋值
if (value!=null) {
for (Boolean bl : args) {
if (bl) {
ignoreEmpty=true;//忽略空字符串
break;
}
}
//如果是空字符串不赋值
if (ignoreEmpty) {
if (value instanceof String) {
String string=(String)value;
if (string.trim().length() == 0) {
continue;
}
}
}
for (Field toField : objToFields) {
//找相同的属性
if(formField.getName().equals(toField.getName())){
Object[] obj = new Object[1];
obj[0] = value;
invokeSetMethod(objTo, toField.getName(), obj);
break;
}
}
}
}
} 如何调用:
    object1; //复制的对象
    object2;//粘贴的对象

    attrCopy(object1, object2, "主键Id");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐