Exception in thread "main" java.lang.UnsupportedOperationException

구창회·2023년 5월 12일
0

에러 사전

목록 보기
4/10

리스트를 new 로 초기화 하지 않고 배열을 그대로 받아 왔을 때(asList) 삽입, 삭제, 수정이 되지 않는 오류

Integer[] qu = new Integer[size];
for (int i = 0; i < size; i++) {
     qu[i] = i + 1;
}
List<Integer> queue = Arrays.asList(qu);

// 문제가 뜨는 코드 - 예시
queue.remove(3);
// Exception in thread "main" java.lang.UnsupportedOperationException

일반적으로 값을 세팅하고, 변경하지 않을 거라면 위와 같이 List형을 Arrays.asList로 초기화해도 아무런 문제가 없으나, new로 생성하지 않는 List의 값을 변경하려 한다면 UnsupportedOperationException 에러가 발생한다. 따라서 new 로 초기화 해주어야 위와 같은 오류가 발생하지 않는다.

수정방향

Integer[] qu = new Integer[size];
for (int i = 0; i < size; i++) {
     qu[i] = i + 1;
}
List<Integer> queue = new ArrayList<>(Arrays.asList(qu)); <-- 새로운 객체를 생성

에러가 나지 않고 잘 컴파일 된다!

profile
백엔드 엔지니어 프로 지망생

0개의 댓글