프로그래밍 정리/자바

clone()

주누다 2013. 7. 11. 01:26
반응형

clone()

- clone()의 기능

-> 메모리를 복사하는 메서드

-> protected native Object clone() throws CloneNotSupportedException

-> 객체는 참조를 기본으로 함.


clone() 의 사용 방법(1)

- 아들 클래스에서 재정의 해서 사용

- Cloneable interface를 구현

- Cloneable interface : 표시 인터페이스(구현할 메서드 없음)


==========================================================================================================



class FirstClone implements Cloneable{

public int count = 0;

public FirstClone(int count) {

// TODO Auto-generated constructor stub

this.count = count;

}

public Object clone() throws CloneNotSupportedException{

return super.clone();

}

}



public class FirstCloneTest {


public static void main(String[] args) throws CloneNotSupportedException {

FirstClone fc1 = new FirstClone(22);

FirstClone fc2 = (FirstClone)fc1.clone();

System.out.println("fc1 hashCode : " + fc1.hashCode() + ", count의 값 : " + fc1.count);

System.out.println("fc2 hashCode : " + fc2.hashCode() + ", count의 값 : " + fc2.count);

}

}



result : 
fc1 hashCode : 1383884648, count의 값 : 22
fc2 hashCode : 1701381926, count의 값 : 22



===============================================================================================================



Clone()의 사용 방법(2)

- 이미 재정의 되어 있는 clone()메서드를 사용

- Vector, HashTable, array 등 저장 기능이 있는 객체

- Sun사에서 이미 재정의 해둠

- 일반 메서드처럼 사용


===============================================================================================================


import java.util.Vector;



public class SecondCloneTest {


public static void main(String[] args) {

Vector v1 = new Vector();

v1.addElement(new Integer(3));

v1.addElement("javaok");

Vector v2 = new Vector();

v2.addElement("복사본입니다.");

System.out.println(v1);

System.out.println(v2);

}

}


================================================================================================================


반응형

'프로그래밍 정리 > 자바' 카테고리의 다른 글

getClass()  (0) 2013.07.11
wait(), notify(), notifyAll()  (0) 2013.07.11
finalize()  (0) 2013.07.11
hashCode()  (0) 2013.07.11
toString()  (0) 2013.07.11