[JAVA] Clone()메서드
clone()
은 말 그대로 객체를 복사하는 메서드이다. 또 다른 메모리 공간에 객체가 복사되어 생성되는 것이다.
clone()
을 사용하려면 클래스에 Cloneable
인터페이스를 구현해야 한다. 그러나 Cloneable
인터페이스에서 별도로 구현해야하는 메서드는 없다. 이렇게 구현할 메서드가 없는 인터페이스를 마커 인터페이스(marker interface)라고 한다.
class Point {
int x,y;
Point (int x, int y) {
this.x=x;
this.y=y;
}
public String toString() {
return "x= "+x+","+" y= "+y;
}
}
class Circle implements Cloneable {
Point point;
int radius;
Circle (int x, int y, int radius) {
this.radius=radius;
point = new Point(x,y);
}
public String toString () {
return "원점은 "+ point +"이고, 반지름은 "+ radius +"입니다";
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class ObjectCloneTest {
public static void main(String[] args) throws CloneNotSupportedException {
Circle circle = new Circle(10,20,30);
Circle copyCircle =(Circle)circle.clone();
System.out.println(circle);
System.out.println(copyCircle);
System.out.prinltn(System.identityHashCode(circle));
System.out.println(System.identityHashCode(copyCircle));
}
}
/*출력결과
원점은 x=10, y=20이고, 반지름은 30입니다
원점은 x=10, y=20이고, 반지름은 30입니다
2085857771
248609774
*/
위 출력결과처럼 기존 인스턴스와 내용은 완전히 동일하지만, 다른 메모리공간에 새로운 인스턴스가 생성되는 것을 알 수 있다.
Author And Source
이 문제에 관하여([JAVA] Clone()메서드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kekim20/JAVA-Clone메서드저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)