Immutable List 반환하기

하기·2024년 11월 23일
0

오늘은 Java에서 Immutable List를 반환하는 두 가지 방법에 대해 알아봤다.


1️⃣ Collections.unmodifiableList

  • Java 1.2부터 사용 가능.

  • 원본 리스트를 읽기 전용 Wrapper로 감싸는 방식.

  • 장점: 구현이 간단하고, 바로 적용 가능.

  • 단점: 원본 리스트가 변경되면, 반환된 리스트도 영향을 받음.

    public List<MenuItem> getItems() {
        return Collections.unmodifiableList(items);
    }

    2️⃣ List.copyOf

  • Java 10부터 사용 가능.

  • 원본 리스트를 복사하여 완전히 새로운 불변 리스트를 생성.

  • 장점: 원본 리스트와 독립적, 완전한 불변성 보장.

  • 단점: Null 요소가 있으면 NullPointerException 발생.

    public List<MenuItem> getItems() {
        return List.copyOf(items);
    }

    차이점 요약

    unmodifiableListcopyOf
    Java 버전1.2 이상10 이상
    독립성원본과 참조 공유독립적인 리스트 생성
    Null 허용 여부허용예외 발생

    List.copyOf가 더 안전한가?

  1. 원본 리스트와 독립적이어서, 원본 데이터를 수정하더라도 반환된 리스트는 영향을 받지 않는다.

  2. 완전한 불변성을 보장한다. 반환된 리스트는 수정이 불가능하며, 내부적으로 Java의 Immutable Collection으로 처리된다.

  3. Null-safe: Null 값이 포함된 리스트를 방지해, 불변 리스트에서 발생할 수 있는 잠재적인 오류를 줄인다.

  4. 코드 명확성: 읽기 전용인지, 완전히 불변한지에 대해 더 분명한 의도를 전달한다.


    결론

  • Java 10 이상: List.copyOf가 더 안전하고 추천됨.

  • Java 10 미만: Collections.unmodifiableList로 대체 가능.

    Immutable List를 잘 활용해서 데이터 무결성을 보장해야겠다! 😊

0개의 댓글

관련 채용 정보