인자로 들어오는 Collection 객체를 복사하여 unmodifiable list를 반환한다.
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> unmodifiableList = List.copyOf(list);
list.add("d");
System.out.println(list); // [a, b, c, d]
System.out.println(unmodifiableList); // [a, b, c]
인자로 들어오는 Collection 객체의 읽기전용 unmodifiable list를 반환한다.
List<String> list = new ArrayList<>(Arrays.asList("a", "b", "c"));
List<String> unmodifiableList = Collections.unmodifiableList(list);
list.add("d");
System.out.println(list); // [a, b, c, d]
System.out.println(unmodifiableList); // [a, b, c, d]
두 함수 모두 원본 객체와 동일한 원소를 갖는 unmodifiable list를 반환한다.
unmodifiable list란 수정이 불가능한 읽기전용 list를 뜻한다.
List.copyOf는 함수호출로 생성된 객체가 원본 객체를 복사한 객체이므로 둘 사이의 아무런 관계가 없다.
하지만, Collections.unmodifiableList는 내부적으로 원본 객체를 그대로 가지고 있기 때문에 원본 객체 수정 시 unmodifiable list 또한 영향을 받는다.