2014년 5월 14일 수요일

[자바실무,오라클자바커뮤니티교육학원 JAVA교육]JAVA Object clone, 깊은복사(Deep Copy)

[자바실무,오라클자바커뮤니티교육학원 JAVA교육]JAVA Object clone, 깊은복사(Deep Copy)

//clone 메소드를 재정의해서 배열의 값도 별도로 clone시켜 복사되도록 구현

class CusClone implements Cloneable  // 커스터마이된 clone() 정의
{
    int i = 1;
    int arr[] = {1, 2, 3};
    public Object clone() {  // 필요하다면 public으로 선언한다.
        try {
            CusClone obj = (CusClone) super.clone();
            obj.arr = (int[]) arr.clone();
            return obj;
        } catch( CloneNotSupportedException e) {
            throw new InternalError( e.getMessage() );
        }
    }
    public static void main( String[] args )
    {
        CusClone obj1 = new CusClone();
        CusClone obj2 = (CusClone) obj1.clone();
        obj1.i = obj1.arr[0] = 2;
        System.out.println( "obj1.i = " + obj1.i
                            + ", obj2.i = " + obj2.i );
        System.out.println( "obj1.arr[0] = " + obj1.arr[0]
                            + ", obj2.arr[0] = " + obj2.arr[0] );
    }
}

실행 결과

obj1.i = 2, obj2.i = 1
obj1.arr[0] = 2, obj2.arr[0] = 1

댓글 없음:

댓글 쓰기