클래스에서 전체 객체를 복제하는 방법은 무엇인가요?

다음은 clone() 메서드를 사용하여 객체를 복제하는 예제입니다:

public class MyClass implements Cloneable {
    private int number;

    public MyClass(int number) {
        this.number = number;
    }

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    @Override
    public Object clone() throws CloneNotSupportedException {
        return super.clone();
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj1 = new MyClass(10);

        try {
            MyClass obj2 = (MyClass) obj1.clone();
            System.out.println(obj2.getNumber()); // 출력: 10
            obj2.setNumber(20);

            System.out.println(obj1.getNumber()); // 출력: 10
            System.out.println(obj2.getNumber()); // 출력: 20
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

위의 예제에서는 MyClass라는 클래스에서 clone() 메서드를 오버라이딩하여 객체를 복제하도록 했습니다. clone() 메서드는 Object 클래스의 메서드로, 복제된 객체를 반환하도록 구현해야 합니다. clone() 메서드가 호출되면 현재 객체의 복제본이 생성되어 반환되며, 이를 원하는 타입으로 변환하여 사용할 수 있습니다.

주의할 점은 clone() 메서드는 CloneNotSupportedException를 처리해야 한다는 것입니다. 따라서 try-catch 문을 사용하여 예외를 처리하는 것이 좋습니다.

참고 자료: