public class Util {
/**
* Returns a copy of the object, or null if the object cannot be serialized.
*/
//深度克隆,克隆的对象和原来是一个
public static Object deepClone(Object orig) {
Object obj = null;
try {
// Write the object out to a byte array 输出流 深度拷贝对象
FastByteArrayOutputStream fbos = new FastByteArrayOutputStream();
//对象输出流
ObjectOutputStream out = new ObjectOutputStream(fbos);
//把传进来的对象 写入流中,然后这个流是和拷贝对象的流 连接的 所以这个要拷贝的对象 已经交给这个对象
out.writeObject(orig);
out.flush();
out.close();
// Retrieve(检索,恢复) an input stream from the byte array and read
// a copy of the object back in.
//从这个拷贝对象的流中 获取输入流
ObjectInputStream in = new ObjectInputStream(fbos.getInputStream());
//从输入流中读出这个对象
obj = in.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException cnfe) {
cnfe.printStackTrace();
}
//返回拷贝的对象
return obj;
}