티스토리 뷰

728x90

어느정도 Clone에 대해 사용법을 아시는 분들이라고 생각하고

깊은 복사 얕은 복사의 차이는 설명하지 않겠습니다.

 

일차적으로 기본 개인이 생성한 클레스의 Clone()은 아래 코드와 같이

clone()함수를 오버라이딩 하여 재정의함으로서 사용합니다.

안하면 그냥 콜바이레퍼런스로 해당값을 복사가 아니라 가르킵니다.

 

 

 

 

그러면 ArrayList<개인클레스>의 clone()함수는 어떻게 사용하는냐????

 

방법은 2가지 입니다.

1. Arraylist의 clone함수를 변경한다.

2. 그냥 함수를 만든다.

여기서 미친놈들이 위에꺼만 하면 ArrayList도 Clone된다라고 하는데 개소리입니다. 안되서 찾아보고 또 찾아보고 해보고 해보고 빡쳐서 글적는 겁니다.

당연히 후자를 선택합니다.

Why??

기본적으로 구현되어 있는 Arraylist의 clone은 i

nt나 String과 같이 기본 자료형 배열처럼 그냥 복사가 되는 것 위주로

배열(ArrayList)이 복사 즉 clone되게 짜져있습니다.

안믿기면 직접 찾아보세요 

 

그래서 저걸 바꾸는것 보다 그냥 만드는게

더 쉽다는 생각에 그냥 구현하였습니다.

 

다음은 ArrayList를 가지고 있는 Class의 배열인 ArrayList의 복사

즉 Clone방법에 대해 설명하겠습니다.

 

1. 뭐가 한가득 있는 class-Subject

 

2. 뭐가 한가득 있는 class들의 리스트를 가지고 있는 class-Major

여기서 Major의 Clone함수 오버라이딩 할 때보시면 subject 오브젝트들을 각각 클론해서 ArrayList를 새로만들고 집어넣습니다.  

 

3. 심심해서 만든 ArrayList<Major> Clone test!!

 

4.결과입니다.

 

 

 

'SoftWare > 안드로이드' 카테고리의 다른 글

Android - PHPRequest Class  (4) 2016.02.04
Android - CheckBox 이미지 변경  (0) 2016.01.22
Android - TextView 밑줄 긋기  (0) 2016.01.22
Android - EditText 키보드 안나오게 하기  (0) 2016.01.20
Android - xml 파싱(parsing)  (0) 2016.01.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함