컬렉션에서 불변 객체를 생성하는 기능이 추가되어 공부하게 되었다.
여기서 불변 객체란 한번 할당하면 내부 데이터를 수정할 수 없는 것을 말한다.
// 불변 컬렉션을 생성함
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();
여기서도 마찬가지로 내부 데이터를 수정하는 것은 예외가 발생한다.
허접한 글입니다만.. 조금이라도 도움이 되길 바라며 작성해보았습니다.
이처럼 간단하게 불변 객체를 생성할 수 있지만, 주의할 점에 대해 잘 알고 사용하는 내가 되길 바라며...