java 克隆对象工具类_copy工具类--实现对象,对象内子对象,对象内集合等的复制...

packagexxx;importorg.dozer.DozerBeanMapper;importorg.dozer.Mapper;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Locale;importjava.util.Map;importjava.util.Set;public classBeansCopy {private static Logger log = LoggerFactory.getLogger(BeansCopy.class);private static Mapper mapper = newDozerBeanMapper();privateObject fromObj;private List>fromList;privateBeansCopy() {

}public staticBeansCopy getInstance() {return newBeansCopy();

}private staticMapper getMapperInstance() {returnmapper;

}publicBeansCopy from(Object fromObj) {this.fromObj =fromObj;return this;

}public BeansCopy from(List>fromList) {this.fromList =fromList;return this;

}public T to(ClasstoClass) {return this.fromObj == null ? null : getMapperInstance().map(this.fromObj, toClass);

}public List toList(ClasstoClass) {if (this.fromList == null) {return null;

}else{

List listTo = newArrayList();

Iterator var3= this.fromList.iterator();while(var3.hasNext()) {

Object myFromObj=var3.next();

T toObj=getMapperInstance().map(myFromObj, toClass);

listTo.add(toObj);

}returnlistTo;

}

}public static voidcopy(Object from, Object to) {

Method[] methods=from.getClass().getMethods();

Map fromObj = newHashMap();

Method[] var4=methods;int var5 =methods.length;for(int var6 = 0; var6 < var5; ++var6) {

Method method=var4[var6];

String m=method.getName();if (m.startsWith("get")) {try{

Object result=method.invoke(from);if (result != null) {

String field= m.substring(3).toLowerCase(Locale.getDefault());

fromObj.put(field, result);

}

}catch (IllegalArgumentException | InvocationTargetException |IllegalAccessException var11) {

log.warn("{}", var11);

}

}

}

Set fields =fromObj.keySet();

Iterator var13=fields.iterator();while(var13.hasNext()) {

String str=(String)var13.next();

invoke(to, str, fromObj.get(str));

}

}public staticObject invoke(Object o, String field, Object value) {

Method[] methods=o.getClass().getMethods();

Method[] var4=methods;int var5 =methods.length;for(int var6 = 0; var6 < var5; ++var6) {

Method method=var4[var6];

String m=method.getName();if (m.startsWith("set")) {

String s= m.substring(3);if(s.equalsIgnoreCase(field)) {try{

method.invoke(o, value);

}catch (IllegalArgumentException | InvocationTargetException |IllegalAccessException var11) {

log.warn("{}", var11);

}break;

}

}

}returno;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值