이 코드는 리스트를 제자리에서 변이하면서 채운 후, 읽기 전용으로 반환한다. 이런 처리는 간
단한
동시에
효율적이다. 기술적으로 이 결과를
MutableList
로 다운캐스트하고 변경할 수 있
지만, 그렇게 해서는 안 된다. 대신에 결과 타입을 액면 그대로 받아들여야 한다. 이런 방식을
통해 컬렉션을 공유하는 코드는 그 컬렉션의 내용물이 변경되지 않을지 염려할 필요가 없어
진다.
6.3
자바에서 코틀린 컬렉션으로 리팩터링하기
이번 장 앞에서 설명한 자바와 코틀린의 부드러운 상호 운용으로 인해, 컬렉션을 사용하는 코
드를 변환하는 작업도 매끄러운 경우가 많다. 최소한 문법적인 수준에서는 그렇다. 하지만 어
떤 자바 코드가 가변 컬렉션에 의존한다면 코틀린이 자바 코드에서 가정하는 불변 조건
invariant
을 깨는 일은 없는지 더 조심해야 한다.
자바 코드를 코틀린 코드로 리팩터링하는 좋은 접근 방법은 코틀린으로 변환하기 전에 앞부분
에서 설명한 ‘공유된 컬렉션을 변경하지 말라’를 따르는 것이다. 여기서 바로 이런 접근 방법을
택한다.
6.3.1
자바 코드 고치기
앞에서 본 트래블레이터 코드를 살펴보자. 우리가 살펴보는 중인 정적 메서드들은
Suffering
이라는 클래스 안에 있다.
예제
6.5
[
collections ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.