简单的写法,没有对特殊类型进行处理,不过,本人,经过测试,发现,如果,你的Object 类里面的属性都是String类型的话。那就使用我下面这个方法。没有问题的。
如果,有其他的类型的话。那就要一一去判断了,再去赋值。关键的问题就是,Map中取出来的是什么类型的值,你的对象属性是什么类型的值,两者,一致了。复制就不会
有问题了。
/**
* 根据传入的对象,与map
* 把map中与传入对象对应属性的值赋值给
* 对象。
* @param o
* @param map
* @return
*/
private void copyProperty(Object o,Map map){
Class ownerClass = o.getClass();
Set set = map.keySet();
Iterator it = set.iterator();
try{
while(it.hasNext()){
String fieldName = it.next().toString();
Field field = ownerClass.getDeclaredField(fieldName.toLowerCase());
field.setAccessible(true);
Object value = map.get(fieldName);
if(value!=null){
//对Timestamp对象进行处理
if(!(value instanceof String)){
field.set(o, value.toString());
}else{
field.set(o, value);
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}
有什么不足之处,还望大家,纠正,一起学习,分享。