표준 List 구현 선택 실패와 복원 비교

Arrays.asList에 add를 호출하는 크기 변경

계약 위반

Arrays.asList는 배열 길이를 그대로 반영하는 고정 크기 뷰입니다. 크기를 바꾸려면 new ArrayList<>(view)로 복사해야 합니다. 완전 불변 값 목록은 List.of 또는 List.copyOf로 의도를 드러냅니다.

재현

계약 복원

PracticalStudyList는 내부 저장소로 ArrayList를 선택하고 외부 조회에는 List.copyOf 스냅숏을 반환합니다. 첫 스냅숏을 만든 뒤 새 항목을 추가해도 이전 결과가 바뀌지 않습니다. 내부 구현과 외부 불변 계약을 서로 다르게 선택할 수 있습니다.

구현
검증 기준내부 목록 변경은 기존에 반환한 불변 스냅숏의 크기와 원소를 바꾸지 않는다

핵심: 표준 구현 이름보다 계약을 먼저 고릅니다. 가변 여부, 순서, 중복, null, 스냅숏 여부를 정한 뒤 성능 특성으로 구현을 좁힙니다. LinkedList를 단순히 중간 삽입 표만 보고 고르는 선택은 피합니다.