Java深度拷贝:CloneUtils

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/**
* FUNCTION
*
* @author zili
* @create 2017-12-23 17:17
* @since 1.8
*/
public class CloneUtils {

public static <T extends Serializable> T deepClone(T obj) {
T cloneObj = null;

try {
// 写入字节流
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream obs = new ObjectOutputStream(out);
obs.writeObject(obj);
obs.close();

// 分配内存, 写入原始对象, 生成新对象
ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray());
ObjectInputStream ois = new ObjectInputStream(ios);
// 返回生成的新对象
cloneObj = (T) ois.readObject();
ois.close();
} catch (Exception e) {
e.printStackTrace();
}

return cloneObj;
}

}
评论