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);
}
그림으로 표현하면 다음과 같을 것이다.
예시)
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);
}