
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 Aug 9, 2016 自己写的话 比较蠢,java 原生反射效率很低的, 类库 参考 cglib beancopier apache beanutils PropertyUtils |
deep copy? 可以试试序列化以后再反序列化 |
4 yuankui Aug 10, 2016 ``` 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 Aug 10, 2016 原生反射限制太多,序列化后反序列化是好主意 |
9 kost Aug 10, 2016 反射效率再低也比序列化效率高一两个数量级。 比如测试 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 Aug 22, 2016 @yuankui 简单直接 |