RT, 方法需求大概如下:
public class CloneUtil<T> {
public T clone(T t) throws IllegalAccessException, InstantiationException {
Class clazz = t.getClass();
T t2 = (T) clazz.newInstance();
// TODO: 2016/8/9 deep clone
return t2;
}
}
代码里 todo 部分怎么写比较好? 这样写会不会有点蠢?有没有什么库可以做这种事?
1
Troevil 2016-08-09 20:51:18 +08:00
自己写的话 比较蠢,java 原生反射效率很低的, 类库
参考 cglib beancopier apache beanutils PropertyUtils |
3
tobyxdd 2016-08-09 21:02:02 +08:00
deep copy? 可以试试序列化以后再反序列化
|
4
yuankui 2016-08-10 09:54:23 +08:00 2
```
public static<T> T convert(Object src, Class<T> clazz) { String json =JSON.toJSONString(src); T object = JSON.parseObject(json, clazz); return object; } ``` 我比较懒,直接用了 FASTJSON 。。。 |
5
domty 2016-08-10 10:04:58 +08:00
原生反射限制太多,序列化后反序列化是好主意
|
9
kost 2016-08-10 18:23:52 +08:00 2
反射效率再低也比序列化效率高一两个数量级。
比如测试 100 次: Serialization: 12,941 milliseconds Reflection : 139 milliseconds 参考资料: http://www.matthicks.com/2008/05/fastest-deep-cloning.html http://javatechniques.com/blog/faster-deep-copies-of-java-objects/ |
12
breakeryang 2016-08-22 13:40:19 +08:00
@yuankui 简单直接
|