Skip to content

Instantly share code, notes, and snippets.

@jarek-przygodzki
Last active December 11, 2015 08:28
Show Gist options
  • Save jarek-przygodzki/4573059 to your computer and use it in GitHub Desktop.
Save jarek-przygodzki/4573059 to your computer and use it in GitHub Desktop.
A Java deep clone (deep copy) using serialization
package utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class CloneUtils {
/**
* This method makes a "deep clone" of any serializable object
*/
public static <T extends Serializable> T deepClone(T object)
throws IOException, ClassNotFoundException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(object);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
return (T) ois.readObject();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment