객체 복사는 얕은 복사와 깊은 복사가 있다. 얕은 복사는 주소 값을 복사하여 기존 데이터를 가져오는 방식이다.
깊은 복사는 java.lang.Cloneable 인터페이스를 구현하여 clone() 메서드를 재정의 하여 복사를 진행한다. clone()메서드는 예외처리가 필요한 메서드이므로 try-catch를 이용해야한다.
깊은 복사 예제
import java.lang.Cloneable;
class Person implements Cloneable {
public Object clone() throws CloneNotSupportedException { // CloneNotSupportedException는 checked exception 이라 반드시 예외처리
return super.clone(); // 기본적으로 부모의 clone을 그대로 불러와 반환
}
}
public class Main {
public static void main(String[] args) {
try {
Person p = new Person("홍길동", 11);
Person p_copy = (Person) p.clone();
} catch(Exception e) {}
}