컬렉션 변환 API는 크기·공유·가변·null 계약이 다르다
메서드 이름보다 결과가 원본과 무엇을 공유하고 어떤 변경을 허용하는지 확인합니다.
| API | 원본 공유 | 변경 계약 |
|---|---|---|
| Arrays.asList | 배열 원소 | set 가능·크기 고정 |
| new ArrayList | 없음 | 가변 복사 |
| List.copyOf | 없음 | 불변·null 거부 |
| Collections.unmodifiableList | 내부 목록 | view 변경 불가 |
| synchronizedList | 내부 목록 | 호출 단위 동기화 |
핵심: 동기화 래퍼도 여러 호출을 묶은 복합 연산까지 자동으로 원자화하지는 않습니다.