I understand how to do a java deep copy using Serializable and Streams but as long as the object to copy has only primitive data types. In my case I have a parent class that contains among primitive data types an ArrayList of a child class, and they also need to be deep copied.
Can someone please point me to the right direction to do it?
UPDATE:
I thought it was working but I just realize it is not.
This is what I have.
public class Pack implements Serializable
{
String ID;
String serviceCode;
String name;
String type;
ArrayList<Service> services;
public Pack deepClone()
{
try
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(this);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Pack clone = (Pack) ois.readObject();
clone.setID(null);
clone.setType("Replica");
return clone;
}
catch (IOException e)
{
return null;
}
catch (ClassNotFoundException e)
{
return null;
}
}
}
public class Service implements Serializable
{
String ID;
String serviceCode;
String name;
}
Now after cloning a Parent class a get a nice clone but the services array is null.
UPDATE:
Sorry my mistake, it was the lack of sleep. It is indeed working.