목록을 딥 복제하고 싶습니다. 이를 위해 우리는 방법이 있습니다
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
이제 내 목록을 복제하려면 먼저 직렬화 가능으로 변환해야합니다. 목록을 직렬화 가능 목록으로 변환 할 수 있습니까?
목록을 딥 복제하고 싶습니다. 이를 위해 우리는 방법이 있습니다
// apache commons method. This object should be serializable
SerializationUtils.clone ( object )
이제 내 목록을 복제하려면 먼저 직렬화 가능으로 변환해야합니다. 목록을 직렬화 가능 목록으로 변환 할 수 있습니까?
답변:
의 모든 표준 구현은 java.util.List이미 java.io.Serializable.
그래서 비록 java.util.List자체의 하위 유형 아니다 java.io.Serializable, 그것의 목록을 캐스팅하는 것이 안전해야 Serializable당신이 같은 표준 구현 중 하나 알고만큼, ArrayList또는 LinkedList.
확실하지 않은 경우 먼저 목록을 복사 (예 new ArrayList(myList):)하면 직렬화 가능하다는 것을 알 수 있습니다.
SerializationUtils.clone()유형에 인수가 필요합니다 Serializable당신의 변수 유형 인 경우, 그래서, 그리고 List, 당신은 그것을 캐스팅해야합니다.
List<MyClass> myObjs = new ArrayList<MyClass>();을 충족하지 않는 Serializable, 그러나 ArrayList<MyClass> myObjs = new ArrayList<MyClass>();않습니다.
<T extends List<Foo> & Serializable> setFooList(T list).이 경우 호출자가 Serializable 인 일부 List 구현의 인스턴스를 전달해야합니다.
이미 지적했듯이의 대부분의 표준 구현 List은 직렬화 가능합니다. 그러나 목록 내에서 참조 / 포함 된 개체 도 직렬화 할 수 있는지 확인해야합니다 .
List확장되지 않는 Serializable인터페이스 또는 확장되지 않는 인터페이스입니다. List직렬화 할 수없는 s는 표준 라이브러리에서 일반적이지 않을 수 있지만 첫 번째 문장이 올바른 것은 아닙니다.