[Java] java.lang.UnsupportedOperationException 에러 처리

UnsupportedOperationException 에러는 일반적으로 List 형을 new로 초기화하지 않는 상태에서 Arrays로 생성하였을 시 주로 발생한다.

 

java.lang.UnsupportedOperationException 에러 처리


케이스

public static void main(String[] args) {
	List<String> tempList = Arrays.asList("aaa");
	System.out.println(tempList);
		
	tempList.add("bbb");
}

 

일반적으로 값을 세팅하고, 변경하지 않을 거라면 위와 같이 List형을 Arrays.asList로 초기화해도 아무런 문제가 없으나, new로 생성하지 않는 List의 값을 변경하려 한다면 UnsupportedOperationException 에러가 발생한다. 위 코드를 실행하면 다음과 같은 결과가 나온다.

 

실행결과

[aaa]
Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at TestMain.main(TestMain.java:15)

 

즉, 초기화를 한 tempList를 출력할 때에는 아무런 문제가 없으나 tempList에 값을 추가/변경/삭제하려고 할 시 에러가 발생하는 것이다.

 

해결책

public static void main(String[] args) {
	List<String> tempList = new ArrayList<>(Arrays.asList("aaa"));
	System.out.println(tempList);
		
	tempList.add("bbb");
	System.out.println(tempList);
}

 

실행결과

[aaa]
[aaa, bbb]
반응형

댓글

Designed by JB FACTORY