This generic class will help to obtain a deep copy of any object and cast it to the Object Type:
public class ObjectCloner{ private ObjectCloner(){} // returns a deep copy of an object public static Object deepCopy(Object oldObj) throws Exception { ObjectOutputStream oos = null; ObjectInputStream ois = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); // A oos = new ObjectOutputStream(bos); // B // serialize and pass the object oos.writeObject(oldObj); // C oos.flush(); // D ByteArrayInputStream bin = new ByteArrayInputStream(bos.toByteArray()); // E ois = new ObjectInputStream(bin); // F // return the new object return ois.readObject(); // G } catch(Exception e) { System.out.println("Exception in ObjectCloner = " + e); throw(e); } finally { oos.close(); ois.close(); } }}