티스토리 뷰
clone()
is a method in the Java programming language for object duplication. In java, objects are manipulated through reference variables, and there is no operator for copying an object—the assignment operator duplicates the reference, not the object. The clone() method provides this missing functionality.
Clone 은 객체 복제를 위해 제공하는 자바 프로그래밍 함수다. 자바에서는 객체변수로 접근 또는 조작할 수 있다.
1. Shallow Copy
- Method : 레퍼런스지정
2. Deep Copy
- Method : clone()
3. Copy 형태
- primitive type : data duplicate(데이터 복제)
=> 데이터 복제를 통해 원데이터의 복제본을 제공
- Object type : reference duplicate(레퍼런스 복제) => Deep Copy 필요이유
=> 레페런스 복제를 통해 원데이터의 레퍼런스 복제를 제공하고, 원데이터는 공유한다.
- 소스코드 예시
가. ShallowCopy vs DeepCopy 방법
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class Foo { public Bar myBar; public Foo() { myBar = new Bar(); } public Foo shallowCopy() { Foo newFoo = new Foo(); newFoo.myBar = myBar; return newFoo; } public Foo deepCopy() { Foo newFoo = new Foo(); newFoo.myBar = (Bar) myBar.clone(); return newFoo; } } | cs |
나. Deep Copy
public class Bar implements Cloneable{@Overridepublic Object clone() {try {return super.clone();} catch (CloneNotSupportedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}다. TEST
1234567891011121314151617 public class CloneCopy {public static void main(String args[]) {Foo myFoo = new Foo();Foo sFoo = myFoo.shallowCopy();Foo dFoo = myFoo.deepCopy();System.out.println(myFoo.myBar == sFoo.myBar);System.out.println(myFoo.myBar.equals(sFoo.myBar));System.out.println(myFoo.myBar == dFoo.myBar);System.out.println(myFoo.myBar.equals(dFoo.myBar));}}cs 결과true true false false
'JAVA' 카테고리의 다른 글
ThreadLocal 은 언제써야할까?? (0) | 2018.12.20 |
---|---|
MultiThread 멀티스레드 (0) | 2018.12.18 |
Model-View-Controller(MVC) Pattern (0) | 2018.12.16 |
이벤트버스 패턴 (0) | 2018.12.07 |
브로커 패턴 (0) | 2018.12.03 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- jsp
- jsp 자바클래스 넣는법
- 아키텍처패턴
- 디자인패턴
- data.map
- josn object
- JSP JAVA
- 자바 객체복사
- SSL
- 마스터 슬레이드 패턴
- <%%>
- JSP 자바 사용법
- 클라이언트서버모델
- 프라이빗블록체인
- 소프트웨어디자인
- jsp내 자바넣기
- HTTPS
- 클라이언트서버아키텍처
- 계층화패턴
- 마스터 슬레이드
- 퍼블릿블록체인
- 카드사용알림서비스
- JSP JAVA 변수 선언
- 스레드로컬
- 아키텍처
- 이벤트버스패턴
- 이더리움
- 데이터시각화
- 자바 클론
- JSP JAVA코드 넣기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함