You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
단순히 인스턴스의 값만 복사하기 때문에, 참조 타입인 변수가 있는 클래스는 완전한 인스턴스 복제가 이루어지지 않는다.
즉, 참조 타입의 경우, 원본과 복제본이 같은 객체를 공유하게 된다.
사용 방법
반드시 Cloneable 인터페이스를 구현해야 한다. (아무나 막 복제해가면 안 되니까!)
Cloneable 인터페이스를 구현하지 않은 클래스에서 clone 메서드를 호출하면 CloneNotSupportedException이 발생한다.
=> 🚨생성자를 호출하지 않고도 객체를 생성할 수 있게 된다.
언제 사용해야 할까?
객체 생성 비용이 비싼 경우 (ex. 배열)
int[] original = {1, 2, 3};
// 직접 구현하는 경우int[] copy = newint[original.length];
for (inti = 0; i < original.length; i++) {
copy[i] = original[i];
}
// clone을 사용하는 경우 -> 상대적으로 더 깔끔하게 코드를 작성할 수 있다!int[] copy = original.clone();
This discussion was converted from issue #72 on November 24, 2024 14:03.
Heading
Bold
Italic
Quote
Code
Link
Numbered list
Unordered list
Task list
Attach files
Mention
Reference
Menu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
clone()
자신을 복제하여 새로운 인스턴스를 생성하는 메서드
CloneNotSupportedException
이 발생한다.=> 🚨생성자를 호출하지 않고도 객체를 생성할 수 있게 된다.
언제 사용해야 할까?
정적 팩터리 메서드
나,복사 생성자
를 사용하는 것이 더 낫다.clone 대체하기
복사 생성자
단순히 자신과 같은 클래스의 인스턴스를 인수로 받는 생성자
정적 팩터리 메서드
Beta Was this translation helpful? Give feedback.
All reactions