Arrays.asList view와 ArrayList 복사본은 소유권이 다르다

배열 view는 원소 변경을 원본과 공유하지만 크기를 바꿀 수 없고, 복사본은 독립적으로 성장합니다.

Arrays.asList(array)

고정 크기 · set은 원본 배열 반영

new ArrayList<>(view)

독립 가변 복사 · add/remove 가능

List.copyOf(view)

불변 snapshot · 이후 원본 변경 미반영

핵심: API 반환 전에 호출자가 내부 상태를 바꿀 수 있는지 계약을 정합니다.