본문 바로가기
Programming/삽질일기

[Java] java.lang.UnsupportedOperationException ImmutableCollections

by kghworks 2023. 12. 20.

java.lang.UnsupportedOperationException
at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)

 

 

오류 메시지에 답이 나와있다. ImmutableCollection에 대한 UnsupportedOperationException이다. 아래처럼 재현 가능하다.

@Test
@DisplayName("리스트 수정 테스트")
public void unsupportedOperationException() {
    List<String> aespaList = List.of("karina", "winter", "giselle");

    assertThrows(UnsupportedOperationException.class, () -> {
        aespaList.add("ningning");
    });

}

 

나의 경우 List.of를 통해 생성한 불변 객체(ImmutableCollection)를 수정하려했기 때문에 발생한 예외다.

java.util.List 의 of 메서드

 

Java doc에 unmodifiable list를 리턴해줌을 알 수 있다. 아래처럼 간단하게 복사해서 우회할 수 있다.

@Test
@DisplayName("리스트 수정 테스트")
public void unsupportedOperationException() {
    List<String> aespaList = List.of("karina", "winter", "giselle");

    assertThrows(UnsupportedOperationException.class, () -> {
        aespaList.add("ningning");
    });

    List<String> aespaListModifiable = new ArrayList<>(aespaList);

    assertDoesNotThrow(() -> {
        aespaListModifiable.add("ningning");
    });
}

 

사용하는 API 문서를 유심히 살펴보자.

댓글