필자는 Serializable 및 Streams를 사용하여 Java 딥 카피를 수행하는 방법을 이해하지만 복사 할 객체가 원시 데이터 유형만을 가지고있는 한 이해합니다. 필자의 경우에는 기본 데이터 유형 중 하나 인 하위 클래스의 ArrayList를 포함하는 상위 클래스가 있고 그 하위 클래스도 완전히 복사해야합니다.체인 된 Java 딥 복사?
누군가 올바른 방향으로 나를 가리킬 수 있습니까?
UPDATE :
내가 그것을 작동 있다고 생각하지만 난 그냥하지 않습니다 알고 있습니다.
이것은 내가 가지고있는 것입니다.
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입니다.
UPDATE : 내 실수
죄송합니다, 그것은 수면의 부족이었다. 실제로 작동합니다.
당신이 프리미티브을 의미합니까? – arshajii
네, 고맙습니다. 고칠 수있게 해주세요. – Jigzat
당신의 이해가 틀리면, 깊은 물체에서도 작동합니다. – Yoni