목록을 딥 복제하고 싶습니다. 이를 위해 우리는 방법이 있습니다
// 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는 표준 라이브러리에서 일반적이지 않을 수 있지만 첫 번째 문장이 올바른 것은 아닙니다.