CH7-5 · FLOW

불변 객체 설계 예제가 실행되는 순서

입력 가변 참조 방어 복사에서 시작해 변경 대신 새 객체 반환까지 값과 책임이 이동한다.

  1. 1
    입력 가변 참조 방어 복사

    필수 값을 검증해 final 필드에 저장하고 상태를 바꾸는 setter를 제공하지 않습니다.

  2. 2
    final 필드에 불변 상태 저장

    호출자가 가진 List나 배열 참조를 그대로 저장하면 생성 뒤 외부 변경이 내부 상태를 바꿀 수 있습니다.

  3. 3
    변경 대신 새 객체 반환

    getter가 내부 배열을 반환하면 외부가 내용을 수정할 수 있습니다.

실행 순서 입력 List를 복사하고 불변 List를 반환하므로 외부 변경이 first의 상태로 들어오지 않습니다.