깊은 클론 VS 얕은 클론
1. 얕은 클론
List<String> friends = new AraayList<>();
friends.add("감자친구1");
Person person = new Person(10, "김감자", friends);
Person copy = person.clone();
List<String> copyFriends = copy.getFriends();
copyFriends.add("복사친구1");
System.out.print(person.toString);
System.out.print(copy.toString);
// 결과 person.toString = copy.toString 동일 : Person[10, 김감자, [감자친구1, 복사친구1]]
class Person implements Cloneable {
public int age;
public String name;
public List<String> friends;
Person(int age, String name, List<String> friends) {
this.age = age;
this.name = name;
this.friends = friends;
}
@Override
protected Person clone() throws CloneNotSupportedException {
return super.clone();
}
}
2. 깊은 클론
List<String> friends = new AraayList<>();
friends.add("감자친구1");
Person person = new Person(10, "김감자", friends);
Person copy = person.clone();
List<String> copyFriends = copy.getFriends();
copyFriends.add("복사친구1");
System.out.print(person.toString);
System.out.print(copy.toString);
// 결과 person.toString : Person[10, 김감자, [감자친구1]]
// 결과 copy.toString : Person[10, 김감자, [감자친구1, 복사친구1]]
class Person implements Cloneable {
public int age;
public String name;
public List<String> friends;
Person(int age, String name, List<String> friends) {
this.age = age;
this.name = name;
this.friends = friends;
}
@Override
protected Person clone() throws CloneNotSupportedException {
List<String> list = new ArrayList<>(this.Person);
return super.clone();
}
}
'JAVA' 카테고리의 다른 글
@ActionForm @Resource 란? (0) | 2023.08.08 |
---|---|
[JAVA] 접근제어자 Private, protected, default, public (0) | 2023.08.08 |
인터페이스 정의, 구체적인 사용 예시 (0) | 2023.06.08 |
[JAVA] chromedriver 실행 에러 해결 (0) | 2023.05.18 |
[JAVA] 간단한 크롤링 구현 (0) | 2023.05.17 |