■ 인스턴스 복사(복제) : clone 메소드
Object 클래스의 인스턴스의 복사를 위한 다음 메소드가 정의 되어 있다.
protected Object clone() throws CloneNotSupportException
그리고 이 메소드가 호출되면, 이 메소드가 호출된 인스턴스의 복사본이 생성되고, 이 복사본의 참조 값이 반환 된다. 단 다음의 조건을 만족해야 이 메소드를 호출할 수 있다.
"Cloneable 인터페이스를 구현해야 합니다."
즉 Cloneable 인터페이스를 구현하고 있는 클래스의 인스턴스만이 clone 메소드의 호출이 가능하다. 만약에 Cloneable 인터페이스를 구현하지 않는 클래스의 인스턴스에서 clone 메소드가 호출되면 위의 메소드 선언에서 보이듯이 CloneNotSupportedException 이라는 예외가 발생한다.
▶ 예제
class Point implements Cloneable {
private int xPos;
private int yPos;
public Point(int x, int y) {
xPos = x;
yPos = y;
}
public void showPosition() {
System.out.printf("[%d, %d]", xPos, yPos);
System.out.println("");
}
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class InstanceCloning {
public static void main(String[] args) {
Point org = new Point(4,3);
Point cpy;
try {
cpy = (Point)org.clone();
org.showPosition();
cpy.showPosition();
} catch(CloneNotSupportedException e) {
e.printStackTrace();
}
}
}
[결과]
[4, 3]
[4, 3]
[Java]BigInteger, BigDecimal 클래스 (0) | 2012.09.15 |
---|---|
[Java]Wrapper 클래스 (0) | 2012.09.15 |
[Java]printStackTrace 활용 예 (0) | 2012.09.12 |
[Java] 예외상황을 알리는 클래스 (0) | 2012.09.10 |
[JAVA]자바의 이름 규칙(Naming Rule) (0) | 2012.08.31 |
댓글 영역