UnsupportedOperationException은 Java에서 RuntimeException의 하위 클래스에 해당하며, 요청된 연산이 해당 객체에서 지원되지 않을 때 발생하는 예외입니다. 이 클래스는 Java Collections Framework(자바 컬렉션 프레임워크)의 멤버로, List, Queue, Set, Map과 같은 대부분의 구체적인 컬렉션 구현체에서 던져질 수 있습니다.
대표적으로 Collections.unmodifiableList()처럼 수정 불가능한 뷰(view) 객체나 고정 크기 리스트(Arrays.asList())에 요소를 추가하거나 삭제하려고 할 때 이 예외가 자주 발생합니다.
구문 (Syntax)
public class UnsupportedOperationException extends RuntimeException
예제 코드
import java.util.*;
public class UnsupportedOperationExceptionTest {
public static void main(String[] args) {
List aList = new ArrayList();
aList.add('a');
aList.add('b');
List newList = Collections.unmodifiableList(aList);
newList.add('c'); // 수정 불가능한 리스트에 추가 시도 → 예외 발생
}
}위 예제에서는 Collections.unmodifiableList(aList)를 통해 원본 리스트의 읽기 전용 뷰를 생성한 뒤, 이 뷰 객체에 새로운 요소 'c'를 추가하려고 시도합니다. 읽기 전용 뷰는 변경 연산을 지원하지 않으므로 UnsupportedOperationException이 발생하게 됩니다.
해결 방법: 이러한 예외를 피하려면 뷰 객체가 아닌 원본 컬렉션 객체(aList)를 사용하여 데이터를 수정해야 합니다. 즉, newList.add('c') 대신 aList.add('c')를 호출하면 됩니다.
실행 결과
Exception in thread "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Collections.java:1055) at UnsupportedOperationExceptionTest.main(UnsupportedOperationExceptionTest.java:9)