背景:
一个很值得细品的问题:Java的深拷贝和浅拷贝。
要实现深拷贝的一个可行方法是让对象实现Cloneable接口,然后重写Object的clone()方法。改方案在网上有很多的教程。
这篇博客的目的是为了记录我找到的一个另外的方法。
方法:
利用中间过渡的方法,把对象转化为Json,再由Json转化为对象,那么两者之间就会引用分离,实现深拷贝的效果。
代码:
public class CopyUtil {
/**
* 深层拷贝
* @param obj 需要拷贝的对象
* @param classType 被拷贝对象的类型
* @return 深拷贝的对象
*/
public static <T> T Copy(Object obj,Class<T> classType) {
String json = new Gson().toJson(obj);
return new Gson().fromJson(json, classType);
}
}
在这里需要导入google 的Gson包.
题外话:
这里只提供一种非实现Cloneable接口而完成的深拷贝方案,至于两者孰优孰劣并没有做对比。