List.copyOf()로 복사한 후, 원본을 수정하면 복사본이 바뀔까?
List.copyOf()로 복사한 후, 원본을 수정하면 복사본이 바뀔까?
-> 바뀔 수도 있고, 바뀌지 않을 수도 있다.
바뀌는 경우
원본에서 참조하는 객체의 값이 바뀌면 복사본도 바뀐다.
원본, 복사본 모두 같은 참조를 가리키고 있기 때문이다.
예시)
public static void main(String[] args) {
List<Hello> original = new ArrayList<>();
original.add(new Hello("hi"));
original.add(new Hello("hi2"));
List<Hello> newONE = List.copyOf(original);
original.get(0).setSth("bye");
System.out.println("original: " + original);
System.out.println("new: " + newONE);
}
그림으로 표현하면 다음과 같을 것이다.
원본에 add, delete, set등의 리스트 단위의 조작을 할 때는, 복사본은 영향받지 않는다.
예시)
public static void main(String[] args) {
List<Hello> original = new ArrayList<>();
original.add(new Hello("hi"));
original.add(new Hello("hi2"));
List<Hello> newONE = List.copyOf(original);
original.add(new Hello("bye"));
System.out.println("original: " + original);
System.out.println("new: " + newONE);
}
Author And Source
이 문제에 관하여(List.copyOf()로 복사한 후, 원본을 수정하면 복사본이 바뀔까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jin942002/List.copyOf로-복사한-후-원본을-수정하면-복사본이-바뀔까저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)