Serializable と Streams を使用して Java のディープ コピーを行う方法は理解していますが、コピーするオブジェクトにプリミティブ データ型しかない場合に限ります。私の場合、プリミティブ データ型の中に子クラスの ArrayList を含む親クラスがあり、それらもディープ コピーする必要があります。
誰かがそれを行う正しい方向に私を向けることができますか?
アップデート:
私はそれが機能していると思っていましたが、そうではないことに気づきました。
これは私が持っているものです。
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;
}
親クラスのクローンを作成した後、適切なクローンが取得されますが、サービス配列は null です。
アップデート:
すみません、寝不足でした。それは確かに機能しています。