자바 컬렉션에서 불변 객체 생성

조경찬 (Jo Gyungchan)·2023년 10월 25일
0

자바

목록 보기
1/5
post-thumbnail

Collection Factory Method

컬렉션에서 불변 객체를 생성하는 기능이 추가되어 공부하게 되었다.
여기서 불변 객체란 한번 할당하면 내부 데이터를 수정할 수 없는 것을 말한다.

  • 불변 객체를 생성하는 방법: of() 정적 메서드를 이용
// 불변 컬렉션을 생성함
List<Integer> result = List.of(1, 2, 3);

Map<String, Integer> result = Map.of(
                "1", 1,
                "2", 2,
                "3", 3
);

위와 같이 간편하게 불변 컬렉션을 만들 수 있다.

하지만 주의점이 무엇이 있을까??

내부 데이터를 수정하려고 하면 UnsupportedOperationException이 발생!!

실제로 of() 메서드를 이용하여 생성한 List에 값을 추가, 제거, 정렬 등 내부 데이터를 수정하려고 하면 예외가 발생한다는 것을 테스트 코드를 통해 확인할 수 있었다.


이를 해결할 방법이 있을까?

생성한 컬렉션에 대해 내부 데이터를 수정하고 싶다면 재할당을 통해 해결할 수 있다.

of 메서드를 통해 만든 불변 컬렉션에서 내부 데이터를 수정할 때 예외가 발생했지만 다음과 같이 재할당을 하여 내부 데이터를 수정할 수 있었다.

List<Integer> source = List.of(1, 2, 3);

//이 부분이 핵심
List<Integer> numbers = new ArrayList<>(source);

빈 불변 객체 생성

또한 빈 불변 컬렉션을 제공하는 기능도 제공한다.

// 비어있는 불변 컬렉션을 생성함
List<Integer> result = Collections.emptyList();

여기서도 마찬가지로 내부 데이터를 수정하는 것은 예외가 발생한다.


허접한 글입니다만.. 조금이라도 도움이 되길 바라며 작성해보았습니다.

이처럼 간단하게 불변 객체를 생성할 수 있지만, 주의할 점에 대해 잘 알고 사용하는 내가 되길 바라며...

profile
한걸음씩 성장하는 개발자

0개의 댓글