본문 바로가기

.주제별/Java

Java) Sublist , Not-serializable

자바 프로그램의 상태를 저장할때,

일반 텍스트 파일로 저장할 수도 있고, 직렬화를 통해서 저장할 수도 있다.

 

직렬화를 하려면, Class에서 "implements Serializable"을 통해서 인터페이스를 구현해야 한다.

또, 직렬화를 하면, 이 객체와 관련된 것이 모두 직렬화(자동) 되어서 저장이 된다.

 

하지만, 직렬화 되지 않는 경우가 있다.

예를들어, Collection 클래스에서 'sublist'라는 메서드를 사용하는 경우

sublist 는 'java.util.RandomAccessSubList'의 instance를 리턴하게 되는데,

이는 직렬화가 안된다.

 

이런 경우, ArrayLIst와 같은 'Serializable List'에 그 내용을 담아야 한다.

 

다음은 직렬화 되지 않는 경우

Collections.sort(userList,userComp);

userList.sublist(min,max);

 

직렬화를 하려면..

List list = new ArrayList();

Collections.sort(userList,userComp);

userList.sublist(min,max);

list.addAll(userList);

 

 

..관련 자료

http://journeymanjournal.blogspot.com/2005/07/collectionssublist-returns-non.html

http://xrath.com/javase/ko/6/docs/ko/technotes/guides/collections/designfaq.html#5

http://dmi.ensica.fr/doc/Java/j2sdk-1_4_2-doc/docs/j2h/java/util/Collections.java.html