import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; import java.io.Serializable; /** * Returns a deep copy of any object that implements Serializable. * This class uses JAXB to serialize and deserialize objects */public class Copier<T extends Serializable> { private final Class<T> type; public Copier(Class<T> type) { this.type = type; } public T GetCopy(T objectToBeCopied) { JAXBElement<T> serializedObject = new JAXBElement(new QName("T"), type, objectToBeCopied); T deserialized = serializedObject.getValue(); return (T) (deserialized); } }
Example that uses the code4 above
Copier<Person> copier =new Copier(Person.class); Person deepCopyPerson= copier.GetCopy(myPerson);